2016-12-27 2 views
0

Ist es möglich, die Methode jQuery.ajax zu erweitern, so dass sie jQuery.ajax.data irgendeines statischen Unterdatenobjekts hinzufügen Jede Ajax-Anfrage?jQuery: Hinzufügen eines Unterobjekts zu einem "Daten" -Objekt bei jeder AJAX-Anfrage auf der Seite

Zum Beispiel, wenn einer meiner AJAX-Anfragen ist:

jQuery.ajax({ 
    url: 'request_file.php', 
    data: { 
     data1: $("#dataField1").val(), 
     data2: $("#dataField2").val(), 
     data3: $("#dataField3").val() 
    }, 
    // ... 
    success: function (result) 
    { 
     // ... 
    }, 
    // ... 
}); 

Ich mag auch „data4: window.someGlobalVar“ automatisch in dieser und in allen anderen Ajax-Anfragen auf der Seite hinzugefügt werden, ohne implizit zu schreiben es in jedem Datenobjekt?

Danke.

Antwort

1

Sie ajaxSetup verwenden können. Tun Sie dies einmal:

$.ajaxSetup({data: { "data4": window.someGlobalVar }}); 

Dann jede nachfolgende $.ajax Anruf, wie die Sie geschrieben haben, werden diese Datenwert enthalten.

+0

Genau das, was ich gesucht habe. Vielen Dank. – Kainax

1

könnten Sie jQuery's ajaxPrefilter verwenden

Es ist ein Filter, der direkt ausgeführt wird, bevor jeder Ajax ausgeführt wird. Dort erhalten Sie die an die $.ajax Methode übergeben Optionen, und man konnte die neue Eigenschaft extend, wie folgt aus:

$.ajaxPrefilter(function(options, originalOptions, jqXHR) { 
    originalOptions.data.data4 = $("#dataField4").val() 
}); 
+1

+1 für Vorschlag, aber @nvioli Methode ist kürzer und genau für diesen Zweck programmiert. Danke trotzdem. – Kainax

Verwandte Themen