这是一个按钮:
<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开发者控制台中看到了两个请求:
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
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有问题吗?
答案 0 :(得分:10)
本身没有任何错误,但你应该自己添加尾部斜杠{/ 1}}。
正在发生的事情是,Web服务器正在使用新URL向AJAX客户端发送/cartManager/add
重定向,因此它会向正确的URL发出新请求(即使用尾部斜杠)。
答案 1 :(得分:2)
这是因为:http://httpd.apache.org/docs/2.0/mod/mod_dir.html#directoryslash
Nohing与你的javascript,这是纯粹的Apache魔法。
当然,正如其他答案中所指出的,你应该在“添加”之后添加一个斜杠,因为“添加”显然是一个文件夹而不是文件。
答案 2 :(得分:1)
Status Code:301 MOVED PERMANENTLY
不,你的JavaScript不会造成这种情况。看起来您的服务器正在将/cartManager/add
重定向到/cartManager/add/
。由于服务器需要一个尾部斜杠,为什么不添加它并避免重定向?
答案 3 :(得分:1)
标题包含您需要的线索。
您对'/ 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();
}
});