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开发者控制台中看到了两个请求:

  1. 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 
  1. 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(); } });