2011-04-04 356 views
5

这里是一个按钮:

<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 /加?:因为这两者都是大同小异的,在请求的头部唯一的区别
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 =和s o和第二个是cartManager/add /?pictureId - '/'after/add

我的javascript有什么问题吗?

+0

我不明白为什么它会打扰你,利比亚局势困扰我。这是预期的行为。 – Anders 2011-04-04 21:15:36

+0

如果将最终/添加到网址,会发生什么情况?网址:'/ cartManager/add /' – fredrik 2011-04-04 21:16:40

回答

9

更换你的Ajax调用没什么每本身错了,但你应该结尾的斜线自己添加到/cartManager/add

发生了什么事是Web服务器发送一个301重定向到AJAX客户端与一个新的URL,因此它发出一个新的请求到正确的URL(即与尾部斜杠)。

1
Status Code:301 MOVED PERMANENTLY 

不,您的JavaScript不会造成这种情况。它看起来像你的服务器重定向/cartManager/add/cartManager/add/。由于服务器需要一个斜线,为什么不添加它并避免重定向呢?

+0

是的,傻我 - 应该首先考虑这个问题。 – abolotnov 2011-04-04 22:49:14

1

标题有你需要的线索。

您向'/ cartManager/add'发送的请求正被转发到'/ cartManager/add /'(注意结尾的正斜杠)。

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

        } 
       });