2016-06-05 6 views
-1

Ältere Versionen von jQuery:Warum funktioniert jQuerys .done() -Ajax-Funktion nur beim Verketten?

function testAjax(handleData) { 
    $.ajax({ 
    url:"getvalue.php", 
    success:function(data) { 
     handleData(data); 
    } 
    }); 
} 

Aktuelle Version von jQuery (funktioniert):

$.ajax({ 

    url: "post.php", 
    data: { 
     id: 123 
    }, 
    method: "GET", 
    dataType : "json", 
}) 
    .done(function(json) { 
    $("<h1>").text(json.title).appendTo("body"); 
    $("<div class=\"content\">").html(json.html).appendTo("body"); 
    }) 

Funktioniert nicht:

$.ajax({ 

    url: "post.php", 
    data: { 
     id: 123 
    }, 
    method: "GET", 
    dataType : "json", 
    done: function(json) { 
    $("<h1>").text(json.title).appendTo("body"); 
    $("<div class=\"content\">").html(json.html).appendTo("body"); 
    } 
}) 
+1

Weil die Bibliothek so implementiert wurde? Was fragst du? Es gibt keine unterstützte "done" -Eigenschaft für das '$ .ajax()' -Argumentobjekt. – Pointy

+0

Weil es so funktioniert. Die Sache, die die'Ajax'-Methoden zurückgeben, hat eine "Done" -Methode. Das Objekt, das Sie an 'ajax' übergeben, konsumiert keine' done' Eigenschaft. Fragen Sie, warum sich der verwendete Ansatz geändert hat? –

+0

Nicht schwer, das in den api docs nachzuschlagen. Ist ein bisschen wie zu sagen, warum funktioniert '$ .ajax(). Success()' nicht? Weil das nicht dokumentiert ist – charlietfl

Antwort

3

Die Antwort ist, dass die Objektparameter definiert sind, von jQuery's XHR API, und die Promise-Funktionen sind durch die Deferred API definiert.

Verwandte Themen