jquery使用$.getJson()跨域大數據量請求方法


jq的$.get和$.post方法,都是不能跨域訪問的。$.getJson卻讓我們看到了希望的曙光,

不過有一點不足的是,這個是GET的方法,傳遞的參數是有限制的,最大不超過2083個字符。

但問題終有解決辦法的,經分析得出解決方案如下:

a.com使用$.getJson向b.com發送請求,在請求的同時,a.com把需要的傳遞的內容放到臨時文件中(或者membercache),

b.com收到請求,反過來向a.com請求需要的數據,進行必要的操作,再給a.com返回成功的信息。這樣就達到跨域大數據量請求的目的了。

當然通訊過程,最好加上協議,安全起見嘛。

 

JS 代碼:

  1. $.getJSON(target_url+"?jsoncallback=?",    
  2.                 {   
  3.                  'userid': <?php echo $userid;?>  
  4.                  },    
  5.                 function(result) {  
  6.                     if(result != 'sc'){  
  7.                         alert(result);  
  8.                     }else{  
  9.                         top.document.getElementById("menu").src = $('#url_'+bid).val()+"admin/left_menu.php";  
  10.                         top.document.getElementById("main").src = $('#url_'+bid).val()+"admin/index_body.php";  
  11.                     }  
  12.                 });   

 

 

PHP服務端代碼:

  1. header('Content-Encoding: plain');  
  2. $userid = SS($_REQUEST['userid']);  
  3. //邏輯代碼  
  4. $msg =  sc;  
  5. $json_str = json_encode(array($msg));  
  6. echo $_REQUEST['jsoncallback'].'('.$json_str.')';  
  7. exit;  

 

 

 

header('Content-Encoding: plain');

這句非常重要,如果沒有這句,在IE6下將不能返回信息,導致回調函數無法執行。

另外在網上找到的說法,沒經驗證

<a href=”javascript:void(0);”></a> 做為提交按鈕也會導致 ie6下 $.getJSON出錯。

提交按鈕不能放置在<form>標簽里面,否則會form中斷了$.getJSON發出的http請求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM