当前位置: 首页 > 面试题库 >

jQuery $ .ajax()执行两次?

闻人和歌
2023-03-14
问题内容

这是一个按钮:

<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有问题吗?


问题答案:

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

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



 类似资料:
  • 我想先除,然后乘,但不知道怎么做这两个想法? 它在工作,但它只是分裂的时刻。

  • 问题内容: 我过去曾经做过一些jQuery,但是我完全坚持了这一点。我了解使用同步ajax调用的优缺点,但是在这里将是必需的。 远程页面已加载(由firebug控制),但未显示任何返回信息。 我应该采取什么措施才能使函数正确返回? 问题答案: 在发出同步请求时,应该 范例-http://api.jquery.com/jQuery.ajax/#example-3 请注意: 设置异步属性设置为fals

  • 问题内容: 我使用jQuery的.load函数将一些HTML代码加载到div中,其中包含要执行的一些代码; 加载ajax请求后,alert(); 函数起作用,但是someFunction无法起作用。 如何从Ajax调用执行此功能 执行的功能也不起作用。 问题答案: 可能您应该使用jQuery.getScript从服务器加载一些javascript并执行它。 更新: 在大多数情况下,仅加载纯HTML

  • 本文向大家介绍简述jQuery ajax的执行顺序,包括了简述jQuery ajax的执行顺序的使用技巧和注意事项,需要的朋友参考一下 jQuery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false即可. 代码如下: 接着看下jquery $.ajax各个事件执行顺序 执行顺序如下: 1.ajaxStart(全局事件)

  • 问题内容: 我有一个要通过jQuery捕获并通过AJAX发送的表单。我的问题是,每次刷新页面时,表单都会提交多次。 我尝试取消绑定“提交”按钮,但通常在第一次提交后发布表单。任何帮助,将不胜感激 问题答案: 您最有可能正在使用或触发ajax事件。试试这个:

  • 从HomeActivity我正在尝试从CreateProfileActivity获取结果。在这里我要做什么来开始这个活动 以下是HomeActivity中方法的实现: 当im完成并按下save in后,下面是我将数据发送回HomeActivity的操作: 在上调用setResult方法一次,但由于某种未知原因,当数据到达方法时,get execute两次。第一个结果的和第二个结果的。在此之后,得到