UPDATE 1: Ich habe nicht herausgefunden, was vor sich geht, aber das scheint definitiv ein Problem mit meinem Projekt zu sein. Nachdem ich eine einfache Testseite erstellt hatte, konnte ich feststellen, dass getJSON tatsächlich ein XHR-Objekt zurückgibt, wie es sein sollte.jQuery Ajax-Methoden, die kein XHR-Objekt zurückgeben
UPDATE 2: Wow, das ist seltsam. Nachdem ich mehr Tests gemacht habe, habe ich festgestellt, dass wenn ich den "Callback =?" Parameter in der URL-Zeichenfolge das XHR-Objekt wird nicht ordnungsgemäß zurückgegeben. Wenn ich jedoch nicht den "Rückruf =?" Parameter, das XHR-Objekt wird ordnungsgemäß zurückgegeben. Die Sache ist, ich rufe einen JSONP-Dienst an, also der "Rückruf =?" Parameter ist erforderlich.
Irgendwelche Ideen darüber, warum dies der Fall sein würde?
UPDATE 3: Hier sind ein paar eigenständige Codebeispiele zur Veranschaulichung des Problems. Im ersten Beispiel ist console.log (request) nicht definiert. Wenn ich den Callback-Parameter im zweiten Codebeispiel fest codiere, ist console.log (request) das XHR-Objekt.
<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: Per unten regilero Kommentar wechselte ich die $ Schnipsel-Methode unter Verwendung von über und übergeben die Parameter über ein Datenobjekt auf. Hier ist der vollständige Code für die Anfrage:
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);
Wenn ich "datatype: 'JSONP'" angeben, in dem Config-Objekt, console.log (Anfrage) ist wieder nicht definiert. Wenn ich jedoch "dataType: 'json'" festlege, ist console.log (request) das XHR-Objekt.
Dieses Verhalten ist konsistent mit dem, was ich mit der Verknüpfung $ .getJSON erlebt habe.
ORIGINAL FRAGE
Pro die Stackoverflow Frage/Antwort hier: Abort Ajax requests using jQuery und eine Reihe anderer Fragen/Antworten auf dieser Seite und andere sollten die jQuery Ajax Methoden, um das XHR-Objekt zurück.
Wenn ich jedoch den folgenden Code ausführen, ist Anfrage "undefiniert".
var request = $.getJSON(url, function(data) {
console.log(data);
});
console.log(request);
Habe ich eine Änderung in jQuery übersehen? Ich benutze 1.4.4.
Laut Handbuch soll es noch ein XHR-Objekt zurück. http://api.jquery.com/jQuery.getJSON/ Vielleicht schlägt die Anfrage fehl? –
@Pekka: Nein, die Anfrage scheitert definitiv nicht. –
Ja, tut mir leid. Ich habe die Frage falsch gelesen. – Anders