jQuery $.ajax() zweimal ausgeführt?
Hier ist ein button:
<input type="button" value="add to cart" id="addToCart" />
und ein gebundenes Ereignis:
$("#addToCart").bind('click',function(){
$.ajax({
url: '/cartManager/add',
data:{
pictureId: currentImageId,
printSize: $("#size option:selected").val(),
paperType: $("#paperType option:selected").val(),
quantity: 1
},
success: function(){
$("#modal").html("<h1>ОК</h1><p>Closing in a sec</p>").delay(1000);
$("#modal").overlay().close();
}
});
return false;
});
Und alles funktioniert finden, außer eine Sache, die Art stört, sehe ich zwei Anfragen in Chrome dev-Konsole:
- hinzufügen /cartManager:
Request URL:http://127.0.0.1:8000/cartManager/add?pictureId=4&printSize=2&paperType=1&quantity=1 Request Method:GET Status Code:301 MOVED PERMANENTLY
- hinzufügen /cartManager/hinzufügen?:
Request URL:http://127.0.0.1:8000/cartManager/add/?pictureId=4&printSize=2&paperType=1&quantity=1 Request Method:GET Status Code:201 CREATED
Request-Header ist für beide so ziemlich das gleiche, der einzige Unterschied in den request-Header:
erste ist cartManager/hinzufügen?pictureId= und so weiter, und der zweite ist cartManager/add/?pictureId - das '/' nach /add
Gibt es etwas falsch mit meinem javascript?
Ich verstehe nicht, warum würde es Sie stören, die situation in Libyen stört mich. Dies ist das erwartete Verhalten.
was passiert, wenn Sie hinzufügen, die Letzte / die url? url: '/cartManager/add/'
was passiert, wenn Sie hinzufügen, die Letzte / die url? url: '/cartManager/add/'
InformationsquelleAutor abolotnov | 2011-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nichts falsch per se, aber Sie sollten den trailing slash zu
/cartManager/add
selbst.Was passiert, ist, dass der web-server sendet eine
301
redirect an den AJAX-client mit einer neuen URL, so es gibt eine neue Anfrage an die richtige URL (also mit abschließenden slash).InformationsquelleAutor Alnitak
Dies ist passiert, weil dieses: http://httpd.apache.org/docs/2.0/mod/mod_dir.html#directoryslash
Nohing zu tun, mit javascript, das ist Reine Apache Zauberei.
Natürlich, wie schon in anderen Antworten, sollten Sie fügen Sie einen Schrägstrich nach dem "hinzufügen", weil "hinzufügen" obvisouly ein Ordner, keine Datei.
InformationsquelleAutor Capsule
Nein, JavaScript ist nicht die Ursache. Es sieht aus wie Ihre server umleiten
/cartManager/add
zu/cartManager/add/
. Da der server will ein trailing slash, warum nicht fügen Sie es einfach und vermeiden den Umleitung?InformationsquelleAutor Isaac Truett
Der header hat die Hinweise, die Sie brauchen.
Ihre Anfrage zu '/cartManager/hinzufügen "wird weitergeleitet zu" /cartManager/add/' (beachten Sie die Endung Schrägstrich).
Ersetzen Sie Ihre ajax-call mit
InformationsquelleAutor Babak Naffas