UPDATE 1:私は何が起こっているのか分かっていませんが、これは間違いなく私のプロジェクトに問題があるようです。簡単なテストページを作成した後、getJSONが実際に想定されているようにXHRオブジェクトを返すかどうかを検証できました。jQueryのAjaxメソッドがXHRオブジェクトを返さない
更新日2:うわー、これは変です。より多くのテストをした後、私は "コールバック=?" XHRオブジェクトは正しく返されません。しかし、私は "コールバック="を指定していない場合は? XHRオブジェクトが正しく返されます。問題は、私はJSONPサービスを呼び出しているので、 "コールバック=?"パラメータが必要です。
なぜこのようなケースが考えられるのですか?
UPDATE 3:ここでは、この問題を説明するためのスタンドアロンのコードサンプルをいくつか示します。最初のサンプルでは、console.log(request)は未定義です。 2番目のコードサンプルでコールバックパラメータをハードコードすると、console.log(request)がXHRオブジェクトになります。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function() {
var request = $.getJSON('http://localhost?callback=?', function(data) {
});
console.log(request);
});
</script>
</body>
</html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function() {
var request = $.getJSON('http://localhost?callback=callback', function(data) {
});
console.log(request);
});
</script>
</body>
</html>
UPDATE 4:以下regileroさんのコメントパー、私は$アヤックスの方法を使用してに切り替え、データオブジェクトを介してパラメータを渡します。ここでは、要求のための完全なコードは次のとおりです。
var request = $.ajax({
data: {
f: 'json',
geometry: '{x:44.203642291681845,y:-95.79085806500001}',
geometryType: 'esriGeometryPoint',
imageDisplay: '727,500,96',
layers: 'all',
mapExtent: '-179.462733065,16.116769346042226,-51.669764315000016,71.57609342040729',
returnGeometry: false,
tolerance: 10
},
dataType: 'jsonp',
success: function(data) {
console.log(data);
},
url: 'http://server.arcgisonline.com/ArcGIS/rest/services/Specialty/Soil_Survey_Map/MapServer/identify'
});
console.log(request);
私が指定した場合:configオブジェクトで「データ型 『をJSONP』」、にconsole.log(リクエスト)が再び定義されていません。しかし、 "dataType: 'json'"を指定すると、console.log(request)がXHRオブジェクトになります。
この動作は、$ .getJSONショートカットで経験したことと一致しています。
元の質問stackoverflowの質問パー
は/ここに答える:Abort Ajax requests using jQueryと他の質問/このサイト上の答えと他の数を、jQueryのAjaxの方法は、XHRオブジェクトを返す必要があります。
ただし、次のコードを実行すると、要求は「未定義」です。
var request = $.getJSON(url, function(data) {
console.log(data);
});
console.log(request);
jQueryの変更がありませんでしたか?私は1.4.4を使用しています。
マニュアルによると、それはまだXHRオブジェクトを返す必要があります。 http://api.jquery.com/jQuery.getJSON/リクエストが失敗する可能性がありますか? –
@ペッカ:いいえ、要求は間違いなく失敗しません。 –
ええ、ごめんなさい。私はその質問を誤解した。 – Anders