JSON 是一種含有簡單括號結構的純文本,因此許多通道都可以交換 JSON 消息。因為同源策略的限制,我們不能在與外部服務器進行通信的時候使用 XMLHttpRequest。而JSONP是一種可以繞過同源策略的方法,即通過使用 JSON 與 <script> 標記相結合的方法,從服務端直接返回可執行的JavaScript函數調用或者JavaScript對象。
整個調用過程中,起關鍵作用的是jsoncallback=?,在客戶端調用時需在請求地址中添加參數:jsoncallback=?;同時服務器端則需要把jsoncallback的值作為方法名傳回來。
服務端代碼:
代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.QueryString["jsoncallback"] + "({name:'test'})");
}
html頁面調用:
代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$.getJSON("http://localhost:10272/test.aspx?jsoncallback=?",
function(data) {
$("#divHeaderLink").html(data.name);
});
});
</script>
</head>
<body>
<div id="divHeaderLink">
</div>
</body>
</html>