jQuery對JSONP的實現

jQuery對JSONP的實現

  jQuery框架也當然支持JSONP,可以使用$.getJSON(url,[data],[callback])方法(詳細可以參考http://api.jquery.com/jQuery.getJSON/)。那我們就來修改下程序A的代碼,改用jQuery的getJSON方法來實現(下面的例子沒用用到向服務傳參,所以只寫了getJSON(url,[callback])):

複製代碼
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
   $.getJSON(
"http://localhost:20002/MyService.ashx?callback=?",function(data){
       alert(data.name
+" is a a"+ data.sex);
   });
</script>
複製代碼

  結果是一樣的,要注意的是在url的後面必須添加一個callback參數,這樣getJSON方法纔會知道是用JSONP方式去訪問服務,callback後面的那個問號是內部自動生成的一個回調函數名。這個函數名大家可以debug一下看看,比如jQuery17207481773362960666_1332575486681。

  當然,加入說我們想指定自己的回調函數名,或者說服務上規定了固定回調函數名該怎麼辦呢?我們可以使用$.ajax方法來實現(參數較多,詳細可以參考http://api.jquery.com/jQuery.ajax)。先來看看如何實現吧:

複製代碼
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
  $.ajax({
       url:
"http://localhost:20002/MyService.ashx?callback=?",  
       dataType:
"jsonp",
       jsonpCallback:
"person",
       success:
function(data){
           alert(data.name
+" is a a"+ data.sex);
       }
  });
</script>
複製代碼

  沒錯,jsonpCallback就是可以指定我們自己的回調方法名person,遠程服務接受callback參數的值就不再是自動生成的回調名,而是person。dataType是指定按照JSOPN方式訪問遠程服務。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章