2010-08-19 14 views
12

Lasst uns sagen, ich habe einen Ajax-Aufruf von jQuery wie folgt aus:Ajax beforeSend unter Verwendung von Daten zu ändern

$.ajax({ 
    url: myUrl, 
    data: myData, 
    type:'post' 
}); 

Ich mag würde dem myData

mit hinzufügen können
$.ajaxSetup({ 
    beforeSend: function(call){...} 
}); 

Das Ergebnis sollte sei, dass alle Ajax-Aufrufe (sowohl Post und Get) geändert wird, wenn ich einen zusätzlichen Parameter IsAjax = True

+0

Sie können die Variable nicht bearbeiten, bevor Sie sie in den Ajax-Aufruf einfügen? – Neal

+0

Sie könnten, aber das wäre nicht sehr trocken. – Mario

Antwort

11

This blog post erhalten erklärt, wie Sie $.ajaxSetup verwenden können, um Daten hinzuzufügen. Es reichert sich wie $.extend Genau dies tun:

$.ajaxSetup({ 
    data:{ 
    isAjax:true 
    } 
}); 
22
$.ajaxSetup({ 
    beforeSend: function(jqXHR, settings) { 
    settings.data = $.extend(settings.data, {isAjax: true}); 
    return true; 
    } 
}); 
+0

1) Sie müssen nicht wahr (nur nicht falsch zurück) 2) Ich denke, an diesem Punkt sind Daten bereits eine parametrisierte Zeichenfolge geworden, so dass Sie & isAjax = True anfügen müssen (seit es ist nicht länger ein Objekt, das erweitert werden kann). – Dtipson

+0

1) Es ist eine gute Angewohnheit, eine Rückgabe zu machen, falls die Funktionalität beeinträchtigt wird. 2) Ich denke, es hängt davon ab, welches Format von Daten Sie weitergeben ** Ajax ** -Funktion – verybadbug

+0

1) Ok, aber im Falle dieser besonderen Funktion hat es keinen Einfluss auf die Funktionalität, so dass es immer noch nicht notwendig ist. Nicht alle Funktionen müssen etwas zurückgeben (deshalb definieren strengere Sprachen bestimmte Funktionen als "void"). 2) Ich glaube nicht, dass es wichtig ist, welches Format es war (get oder post, data obj/string). Daten, die als natives Objekt übergeben werden, werden weiterhin als parametrisierte Zeichenfolge in dieser Funktion protokolliert. – Dtipson

2

Sie können nur tatsächlich beforeSend in $ Schnipsel verwenden();

$.ajax({ 
    beforeSend: function(xhr){ 
    this.data += '&' + $.param({ 
     param: 'test' 
    }); 
    } 
}); 
Verwandte Themen