国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

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

2024-05-04 21:49:55
字體:
來源:轉載
供稿:網友

一般認識url傳遞參數是以get方式,不過我們也可以用post傳遞,特別是在做一些接口時,非常有用,本文我們列舉了用php和Javascript實現的方法.

PHP實現方法

在做接口,post傳遞方式,數據以字符串形式傳輸,返回數據用JSON封裝,然后就開始各種測試啊.

分享最終的方法.

定義抓取函數:

  1. function http_post_data($url$data_string) { 
  2.     $ch = curl_init(); 
  3.     <a href="/tags.php/curl_setopt/" target="_blank">curl_setopt</a>($ch, CURLOPT_POST, 1); 
  4.     curl_setopt($ch, CURLOPT_URL, $url); 
  5.     curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
  6.     curl_setopt($ch, CURLOPT_HTTPHEADER, array
  7.         'Content-Type: application/json; charset=utf-8'
  8.         'Content-Length: ' . strlen($data_string)) 
  9.     ); 
  10.     ob_start(); 
  11.     curl_exec($ch); 
  12.     $return_content = ob_get_contents(); 
  13.     ob_end_clean(); 
  14.     $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
  15.     return array($return_code$return_content); 

然后是方法:

  1. $url  = "路徑"
  2. $data = array(); //數組 
  3. $data = json_encode($data);  //轉化為字符串 
  4. list($return_code$return_content) = http_post_data($url$data); 
  5. $return_content = json_decode($return_content,1); 
  6. 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事件,查看了幫助文檔,必須手動的觸發,否則只能看到頁面刷新而沒有打開新窗口。代碼中只傳遞了一個參數內容,實際可傳遞多個。

具體代碼如下:

  1. function openPostWindow(url,name,data)  
  2. {  
  3.     var tempForm = document.createElement("form");  
  4.     tempForm.id="tempForm1";  
  5.     tempForm.method="post";  
  6.     tempForm.action=url;  
  7.     tempForm.target=name;  
  8.     var hideInput = document.createElement("input");  
  9.     hideInput.type="hidden";  
  10.     hideInput.name= "content" 
  11.     hideInput.value= data; 
  12.     tempForm.appendChild(hideInput);   
  13.     tempForm.attachEvent("onsubmit",function(){ openWindow(name); }); 
  14.     document.body.appendChild(tempForm);  
  15.     tempForm.fireEvent("onsubmit"); 
  16.     tempForm.submit(); 
  17.     document.body.removeChild(tempForm); 
  18.     return false; 
  19. //Vevb.com 
  20. function openWindow(name)  
  21. {  
  22.     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');   
  23. }  
  24. </script> 

調用:

  1. <A href="<a href="/js_a/js.html" target="_blank">javascript</a>:void(0);" onClick="openPostWindow('noWriteSiteInfo.jsp','noWriteSiteInfo','<%=lowerOffset %>');"
  2.    這里是調用;   
  3.  </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對象時都有用.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万荣县| 兴和县| 承德市| 岳阳县| 凤翔县| 得荣县| 本溪| 肥西县| 闵行区| 密山市| 黎城县| 沂源县| 翁牛特旗| 阜新市| 桃江县| 临颍县| 宕昌县| 枝江市| 广河县| 黔东| 珲春市| 疏勒县| 克山县| 连城县| 衡阳县| 浦北县| 当阳市| 嘉荫县| 万山特区| 阿合奇县| 乌什县| 吴堡县| 郁南县| 常宁市| 洛南县| 土默特左旗| 大名县| 湘阴县| 昌宁县| 长治市| 霍林郭勒市|