簡體   English   中英

jQuery $ .ajax()執行了兩次?

[英]jQuery $.ajax() executed twice?

這是一個按鈕:

<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. 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("<h1>ОК</h1><p>Closing in a sec</p>").delay(1000);
                        $("#modal").overlay().close();

                    }
                });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM