我尝试使用Django向服务器发出一个简单的POST请求。我可以使用另一个api客户机来进行post调用,但当使用jquery时,它从不返回任何内容,也不会显示来自回调函数的警报。下面是我的jquery和django代码。我已经替换了api调用,但我知道它是正确的。在
$(document).ready(function(){
$("#signInSubmit").click(function(){
alert("Posting email: "+$("#email").val()+" guests: "+$("#guests").val());
$.post("apicall",
{
'email':$("#email").val(),
'guests':$("#guests").val(),
'event':"1"
},
function(data,status) {
alert("Data: " + data + "\nStatus: " + status);
});
});
});
这是django的观点受到冲击:
^{2}$
结果发现它被包装在HTML主体内的一个表单中,我没有注意到。去掉表格包装后,它工作得很好。在
我想可能有几件事:
在jQuery调用中指定内容类型,确保它显示“application/json”(http://api.jquery.com/jquery.ajax/)因为序列化时假设它是JSON,但它默认为“application/x-www-form-urlencoded”。
您的POST url在其url的末尾需要一个/,而您发布到的端点没有/,这使得Django发出一个指向/url的重定向。您可以通过设置APPEND_SLASH设置来禁用它(https://docs.djangoproject.com/en/1.4/ref/settings/#附加-slash),但实际上最好总是在结尾用'/'来调用所有端点,所以我建议不要用$.post(“apicall”,…)来发布,而是试试$.post(“apicall/”,…),看看这是否有帮助。
否则,你能把你试过的错误贴出来吗?从Chrome中的Django控制台和Javascript控制台?在
相关问题 更多 >
编程相关推荐