小编典典

jQuery $ .ajax()执行两次?

ajax

这是一个按钮:

<input type="button" value="add to cart" id="addToCart" />

和绑定事件:

$("#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;
            });

一切正常,都发现一件麻烦事,我在Chrome开发者控制台中看到两个请求:

  1. 添加/ 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. 添加/ 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有问题吗?


阅读 378

收藏
2020-07-26

共1个答案

小编典典

暂时没有错,但是您应该给/cartManager/add自己加上斜杠。

发生的情况是,Web服务器正在301使用新的URL向AJAX客户端发送重定向,因此它将向正确的URL(即,带有斜杠)发出新请求。

2020-07-26