Server Site API 支援 JSONP 使用模式:
假設 API 輸出結果為 {"status":true} 的 JSON 格式,改成多一個 function name 來包裝: callbackFunc({"status":true})
例如:
$ wget -qO- http://example.com/api
{"status":true}
$ wget -qO- 'http://example.com/api?mycallback=HelloCallback'
HelloCallback({"status":true})
Client Site:
<script>
$(document).ready(function(){
$.ajax({
type: 'GET',
dataType: 'jsonp' ,
jsonpCallback: 'HelloCallback',
url: 'http://example.com/api',
data: 'mycallback=HelloCallback',
success: function(data) {
console.log(data);
}
});
});
</script>
若 Server Site 用的參數剛好是 callback 的話:
$ wget -qO- http://example.com/api
{"status":true}
$ wget -qO- 'http://example.com/api?callback=HelloCallback'
HelloCallback({"status":true})
那 Client Site 可以化簡成:
<script>
$(document).ready(function(){
$.ajax({
type: 'GET',
dataType: 'jsonp' ,
url: 'http://example.com/api',
success: function(data) {
console.log(data);
}
});
});
</script>
可以用 Chrome Browser 觀看 jQuery 發出的 Requests 長什麼樣子,主因是 jQuery 預先幫忙包好了。
沒有留言:
張貼留言