jQuery $ .ajax()执行了两次?

abo*_*nov 6 javascript ajax jquery

这是一个按钮:

<input type="button" value="add to cart" id="addToCart" />
Run Code Online (Sandbox Code Playgroud)

和绑定事件:

$("#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;
            });
Run Code Online (Sandbox Code Playgroud)

一切工作都找不到一件令人烦恼的事情,我在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
Run Code Online (Sandbox Code Playgroud)
  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
Run Code Online (Sandbox Code Playgroud)

两者的请求标头几乎相同,是请求标头中的唯一区别:

首先是cartManager/add?pictureId =等等,第二个是cartManager/add /?pictureId - '/'之后/ add

我的javascript有问题吗?

Aln*_*tak 10

这本身并没有什么不妥,但你应该给/cartManager/add自己添加尾随斜杠.

发生的事情是Web服务器301使用新URL向AJAX客户端发送重定向,因此它向正确的URL发出新请求(即使用尾部斜杠).