3

domain2 (example2.com) から domain1 (example.com) にある JSON ファイルにアクセスしたい。例えば、

$.ajax({
    type:'get',
    url: 'http://example.com/vigneshmoha.json',
    success: function(data) {
        console.log(data);
    },
    statusCode: {
        404: function() {
            console.log('Status code: 404');
        }
    }
}); 

この ajax リクエストを、他のドメイン (つまり、example2.com) から example.com に送信したいと考えています。

JSONPを試しました。それがどのように機能するのか理解できませんでした。誰かがその仕組みを説明してもらえますか?

4

2 に答える 2

9

サービスは、基本的には JavaScript コードである jsonp を返す必要があります。ajax リクエストからサービスにコールバック関数を提供する必要があり、返されるのは関数呼び出しです。

以下は実際の例です。

ajax リクエスト:

$.ajax({
            crossDomain: true,
            type:"GET",
            contentType: "application/json; charset=utf-8",
            async:false,
            url: "http://<your service url here>/HelloWorld?callback=?",
            data: {projectID:1},
            dataType: "jsonp",                
            jsonpCallback: 'fnsuccesscallback'
        });

jsonp を返すサーバー側コード (c#):

public void HelloWorld(int projectID,string callback)
    {

        String s = "Hello World !!";
        StringBuilder sb = new StringBuilder();
        JavaScriptSerializer js = new JavaScriptSerializer();
        sb.Append(callback + "(");
        sb.Append(js.Serialize(s));
        sb.Append(");");
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";
        Context.Response.Write(sb.ToString());
        Context.Response.End();
    }

JSONP とは何ですか?を参照してください。.

于 2013-10-21T10:02:16.543 に答える