0

こんにちは、以下はすべて私のコードです

$.ajax({
    'url': 'myUrl',
    'dataType': 'jsonp',
    crossDomain: true,
    'data': {
      // sample daa
    },
    'success': function (data) {
      alert("here::");
    },
    'error': function (jqxhr, status, errorThrown) {
      alert("Failure, Unable to recieve content : " + status)
      alert(jqxhr.responseText);
    })
})

URL が他のドメインに属しているため、jsonp を使用しています。応答コードを 200 として取得でき、応答のデータを確認できます (Firebug でチェック済み) が、成功またはエラーのメソッドは実行されていません。
これについて私を助けてください

更新応答 (firebug からコピー)

{"documents":[{"trans":"sdsd","orig":"How","translit":"Elā","src_translit":""}],"dict":[{"pos":"unknown","terms":["dgssdg","sgsd"],"entry":[{"word":"gsdg","reverse_translation":["method","treatment","recipe","attitude","how","retro"],"score":0.000305442198},{"word":"మార్గము","reverse_translation":["way","route","road","entry","how","impasse"],"score":0.000305442198}],"base_form":"how","pos_enum":20}],"src":"en","server_time":12}
4

2 に答える 2

0

サーバー側のスクリプトが明らかに JSONP ではなく JSON を返しているため、これは機能しません。クロスドメイン AJAX リクエストで呼び出すことができるようにする場合は、JSONP を返すようにサーバー側スクリプトを変更する必要があります。

JSONP の詳細については、http: //en.wikipedia.org/wiki/JSONPを参照してください。

したがって、代わりに:

{
    "documents": [
        {
            "trans": "sdsd",
            "orig": "How",
            "translit": "Elā",
            "src_translit": ""
        }
    ],
    "dict": [
        {
            "pos": "unknown",
            "terms": [
                "dgssdg",
                "sgsd"
            ],
            "entry": [
                {
                    "word": "gsdg",
                    "reverse_translation": [
                        "method",
                        "treatment",
                        "recipe",
                        "attitude",
                        "how",
                        "retro"
                    ],
                    "score": 0.000305442198
                },
                {
                    "word": "మార్గము",
                    "reverse_translation": [
                        "way",
                        "route",
                        "road",
                        "entry",
                        "how",
                        "impasse"
                    ],
                    "score": 0.000305442198
                }
            ],
            "base_form": "how",
            "pos_enum": 20
        }
    ],
    "src": "en",
    "server_time": 12
}

サーバー側のスクリプトは次を返す必要があります。

someCallback({
    "documents": [
        {
            "trans": "sdsd",
            "orig": "How",
            "translit": "Elā",
            "src_translit": ""
        }
    ],
    "dict": [
        {
            "pos": "unknown",
            "terms": [
                "dgssdg",
                "sgsd"
            ],
            "entry": [
                {
                    "word": "gsdg",
                    "reverse_translation": [
                        "method",
                        "treatment",
                        "recipe",
                        "attitude",
                        "how",
                        "retro"
                    ],
                    "score": 0.000305442198
                },
                {
                    "word": "మార్గము",
                    "reverse_translation": [
                        "way",
                        "route",
                        "road",
                        "entry",
                        "how",
                        "impasse"
                    ],
                    "score": 0.000305442198
                }
            ],
            "base_form": "how",
            "pos_enum": 20
        }
    ],
    "src": "en",
    "server_time": 12
})

ここで、クライアントはコールバック関数の名前 ( someCallback) をクエリ文字列パラメーターとして渡すことで指定できる必要があります。

次に、クロスドメイン AJAX 呼び出しを実行できます。

$.ajax({
    url: 'http://example.com/some_endpoint',
    jsonp: 'callback',
    dataType: 'jsonp',
    data: { firstName: 'john', lastName: 'smith' },
    success: function (result) {
        alert(result);
    },
    error: function (jqxhr, status, errorThrown) {
        alert('Failure, Unable to recieve content : ' + status)
        alert(jqxhr.responseText);
    }
});
于 2013-08-02T07:44:34.287 に答える
0

jsonp を使用する場合、コードは次のようになります。

例 クライアント側

    $.ajax({
        dataType    : "jsonp",
        url         : ' Some url ',
        data        : { some json data },
        // this is jsonp callback that use must to return from server side
        jsonpCallback : 'getResponse' 
    });

サーバー側は次のようなものを返す必要があります。

echo "getResponse({ some json data })";
于 2013-08-02T07:54:00.290 に答える