jQuery $ .ajax()执行了两次?
这是一个按钮:
和绑定事件:
$("#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("ОК
Closing in a sec
").delay(1000); $("#modal").overlay().close(); } }); return false; });
一切工作都找不到一件令人烦恼的事情,我在Chrome开发者控制台中看到了两个请求:
- add / 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
- add / cartManager / add?:
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
两者的请求标头几乎相同,是请求标头中的唯一区别:
首先是cartManager / add?pictureId =等等,第二个是cartManager / add /?pictureId – ‘/’之后/ add
我的javascript有问题吗?
本身没有任何错误,但您应该将尾随斜杠添加到/cartManager/add
自己。
发生的事情是Web服务器使用新URL向AJAX客户端发送301
重定向,因此它向正确的URL发出新请求(即使用尾部斜杠)。
发生这种情况的原因是: http : //httpd.apache.org/docs/2.0/mod/mod_dir.html#directoryslash
与你的javascript一样,这是纯粹的Apache魔法。
当然,正如其他答案中所指出的,你应该在“添加”之后添加一个斜杠,因为“添加”显然是一个文件夹,而不是文件。
Status Code:301 MOVED PERMANENTLY
不,你的JavaScript不会造成这种情况。 看起来您的服务器正在重定向/cartManager/add
到/cartManager/add/
。 由于服务器需要一个尾部斜杠,为什么不添加它并避免重定向?
标题有你需要的线索。
您对’/ cartManager / add’的请求正被转发到’/ cartManager / add /’(注意结束正斜杠)。
用。替换你的ajax调用
$.ajax({ url: '/cartManager/add/', data:{ pictureId: currentImageId, printSize: $("#size option:selected").val(), paperType: $("#paperType option:selected").val(), quantity: 1 }, success: function(){ $("#modal").html("ОК
Closing in a sec
").delay(1000); $("#modal").overlay().close(); } });