1. 程式人生 > >$.getJSON()跨域請求

$.getJSON()跨域請求

 1,同一域名下和其他的請求可以是一樣的

js:

        var url="http://localhost:2589/a.ashx";
        $(function(){
            $.getJSON(url,function(data){
                alert (data.Name);
            })
        });

 伺服器返回字串:

{"Name":"loogn","Age":23}

 2,不同域名下

js:

       var url="http://localhost:2589/a.ashx?callback=?
";
        $(function(){
            $.getJSON(url,function(data){
                alert (data.Name);
            })
        });

 伺服器返回字串:

jQuery1706543070425920333_1324445763158({"Name":"loogn","Age":23})

 返回的字串就是一個呼叫一個叫“jQuery1706543070425920333_1324445763158” 的函式,引數是{"Name":"loogn","Age":23}。

其實這個很長的函式名是請求路徑中callback=?

的作用,我想應該是這樣的:$.getJSON方法生成一個對回撥方法的引用的名字,換掉?。上面請求會變成

http://localhost:2589/a.ashx?callback=jQuery1706543070425920333_1324445763158&_=1324445763194,所以伺服器回返json時要處理一下,如:

*****伺服器記得加上callback 

    string cb = context.Request["callback"];
    context.Response.Write(cb + "(" + json + ")");

引數名callback也可換成jsoncallback,我想是怕衝突吧,jsoncallback應該優先檢測,沒有再檢測callback(沒測試!!)

?也可是具體的函式名,這樣回撥函式就不能是匿名的了,用?生成只是jQuery為我們的一般操作提供的一個便利。