これが私のajax呼び出しです。
$.ajax({
type: "GET",
url: "http://example.com/v1/search?keyword=r",
dataType: "jsonp",
crossDomain: true,
success: function (responseString) {
alert(responseString);
},
error: function (xhr, errorType, exception) {
var errorMessage = exception || xhr.statusText;
alert(errorMessage);
}
});
私のサンプルURLからの応答
{
"response": [{
"attributes": {
"type": "enge",
"url": "/services/data/v24.0/sobjects/Challenge__c/a0GZ0000005Vvh4MAC"
},
"name": "Really",
"end_date": "2013-02-07T15:26:00.000+0000",
"total": 350.0,
"registered_members": 0.0,
"id": "30",
"type": "Design",
"id": "a0GZ0000005Vvh4MAC",
"start_date": "2012-11-19T16:52:00.000+0000",
"description": "This is my really cool challenge",
"remaining_days": 28.0,
"categories__r": [{
"attributes": {
"type": "Category__c",
"url": "/services/data/Category__c/a08Z0000000RNI2IAO"
},
"id": "0RNI2IAO",
"display_name": "Andy"
}, {
"attributes": {
"type": "Category__c",
"url": "/services/Category__c/a08Z0000000RNI3IAO"
},
"id": "a0O",
"display_name": "ADR"
}]
}
}],
"count": 1
}
クロスドメインコールを実行しようとするとエラーが発生する
jQuery180014405992737595236_1357861668479 was not called
更新
さて、私はdataType: "json"を使用しようとしましたが、その時点でエラーが発生しました
No Transport
これは、ネットワークエラー、またはJSONP応答を返さないエンドポイントを示唆しています。
(テスト時にDNSルックアップエラーが発生するのは、それが実際のURLではないためだと思います(URLの例としてexample.com
を使用してください)。そうでない場合は、問題)。
これは誤ったJSONP応答です。サーバーは、GET
リクエストのcallback=nameOfCallbackFunction
引数を処理し、関数ラッパーとして機能させる必要があります。
その場合、適切な応答は次のようになります。
nameOfCallbackFunction({"yourjson": "here"});
私はこれが古いスレッドであることを知っていますが、クロスドメインのajaxサンプルを機能させるのに苦労しています。私はdataTypeの使用について多くを読みました:jsonpとsupport.cors = trueですが、200-成功しましたがparseerrorを取得しました。
次に、このスレッドで、どちらか一方の使用について読みました。次に、dataType:をjsonに変更し、support.cors = trueのままにして、動作しました。最後に 。 。 。
これは、同じ問題に遭遇した他の誰かを助けるかもしれません。
エラーJQueryXXXXが発生する理由は、呼び出すURLにエラーがあるためです。「?callback =?」を導入する必要があるため、次のようになります。
"http://example.com/v1/search?callback=?keyword=r"
また、.phpを呼び出す場合は、次の点に注意してください。
header('Content-Type: application/json; charset=utf8');