通過URL參數post傳遞的實現方式 PHP/Javascript

來源:互聯網
上載者:User

PHP實現方法

在做介面,post傳遞方式,資料以字串形式傳輸,返回資料用JSON封裝。

然後就開始各種測試啊。

分享最終的方法:

定義抓取函數:

function http_post_data($url, $data_string) {    $ch = curl_init();    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);    curl_setopt($ch, CURLOPT_HTTPHEADER, array(        'Content-Type: application/json; charset=utf-8',        'Content-Length: ' . strlen($data_string))    );    ob_start();    curl_exec($ch);    $return_content = ob_get_contents();    ob_end_clean();    $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);    return array($return_code, $return_content);}



然後是方法:

$url  = "路徑";$data = array(); //數組$data = json_encode($data);  //轉化為字串list($return_code, $return_content) = http_post_data($url, $data);$return_content = json_decode($return_content,1);var_dump($return_content); //輸出返回結果。





window.open url 參數post方式傳遞

最近在做web項目,碰到需要跨頁面傳遞參數的功能,就是那種需要把當前頁面的內容帶到新開的子表單中,以前的做法是傳一個id過去,然後在新視窗中去讀資料庫的內容。雖然不怎麼麻煩,但是如果內容麼有在資料庫裡儲存,僅僅是處以擬稿狀態時,就不能實現了,使用者還常常認為是個bug。考慮採用get的方式傳遞,把需要的內容都序列化然後,通過url去傳,顯得很臃腫,而且get的傳遞內容長度有限制。於是就想到用post的方式傳遞,問題在於open方法不能佈建要求方式,一般網頁的post都是通過form來實現的。如果僅僅類比form的提交方式,那麼open方法裡那種可設定表單內容的參數又不能用。最後想辦法整了這麼一個兩者結合的方式,將form的target設定成和open的name參數一樣的值,通過瀏覽器自動識別實現了將內容post到新視窗中。

比較有意思的是直接通過調用form的submit方法不能觸發onsubmit事件,查看了協助文檔,必須手動的觸發,否則只能看到頁面重新整理而沒有開啟新視窗。代碼中只傳遞了一個參數內容,實際可傳遞多個。
具體代碼如下:

function openPostWindow(url,name,data) {     var tempForm = document.createElement("form");     tempForm.id="tempForm1";     tempForm.method="post";     tempForm.action=url;     tempForm.target=name;     var hideInput = document.createElement("input");     hideInput.type="hidden";     hideInput.name= "content"    hideInput.value= data;    tempForm.appendChild(hideInput);      tempForm.attachEvent("onsubmit",function(){ openWindow(name); });    document.body.appendChild(tempForm);     tempForm.fireEvent("onsubmit");    tempForm.submit();    document.body.removeChild(tempForm);    return false;}function openWindow(name) {     window.open('about:blank',name,'height=400, width=400, top=0, left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes,location=yes, status=yes');  } </script>





調用:

<A href="javascript:void(0);" onClick="openPostWindow('noWriteSiteInfo.jsp','noWriteSiteInfo','<%=lowerOffset %>');">   這裡是調用;   </A>



注意紅色部分 如果沒有這個,會導致頁面上<jsp:include page=""/> 這種頁面丟失,這是 連結的href 和 onclick 共存問題,

請求的連結是用的 A 標籤,A上同時寫了href和onclick事件。對於連結 A 標籤而言,當使用者按一下滑鼠的時候,A對象被觸發時會首先去執行onclick部分,然後是href。

解決方案就是:

直接把onclick事件寫在href中:href="javascript:openPostWindow(。。。)"
還有一種解決方案:<a href="javascript:void(0)" onclick="do();return false;">Test</a>
這樣是忽略了href部分,這對於通過onclick傳遞this,或者無法避開a對象時都有用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.