我正在探索AJAX表单提交,我遇到了一个问题,我的AJAX调用返回错误,几乎没有任何关于原因的信息。
我的SubmitForm方法如下:
function SubmitForm(FormId,Container)
{
var FormElement = document.getElementById(FormId);
var TargetUrl = document.URL + "resource/form/" + FormId + ".php";
var SubmitUrl = TargetUrl + "?action=submit";
var SuccessUrl = TargetUrl + "?action=success";
var ErrorUrl = TargetUrl + "?action=failure";
var DataString = "";
for( var i = 0; i < FormElement.length; i++ )
{
if( i > 0 )
DataString += "&"
DataString += FormElement.elements[i].name + "=" + FormElement[i].value;
}
$.ajax({
type: "POST",
url: SubmitUrl,
data: DataString,
success: function() {
RequestAjax(Container,SuccessUrl);
},
error: function(object, textStatus, errorThrown){
console.log(textStatus + "|" + errorThrown + "|" + object.status + "|" + object.responseText);
RequestAjax(Container,ErrorUrl);
}
});
return false;
}
提交自:
<input name="submit" type="submit" id="submit" class="submit" value="Login" onClick="javascript: SubmitForm('loginForm','userData');" />
我得到这样的输出;
error||0|
我知道我尝试访问的URL存在,并且在另一个实例中使用了基本相同的代码来提交表单,但是遇到了您在上面看到的真正的indescript问题。
非常感谢任何建议。
答案 0 :(得分:1)
零的状态来自页面运行文件协议或在进行Ajax调用时刷新页面。如果没有看到你的方法被调用,我假设你正在这样做
<form onsubmit="SubmitForm();" />
您错过了返回
<form onsubmit="return SubmitForm();" />
^^^^^^
或输入点击
<input type="submit" onclick="SubmitForm();" />
应该是
<input type="submit" onclick="return SubmitForm();" />
^^^^^^
答案 1 :(得分:1)
我要尝试的第一件事就是UrlEncode你的价值观:
var DataString = "";
for( var i = 0; i < FormElement.length; i++ )
{
if( i > 0 )
DataString += "&"
DataString += FormElement.elements[i].name + "=" + encodeURI(FormElement[i].value);
}
答案 2 :(得分:0)
我发现当Ajax进程中止时会发生这种情况。如果页面被卸载,或者由于某种原因重置了服务器连接,则会发生这种情况。
btw:如果您使用的是jQuery,最好使用$(FormElement).serialize()
构建postdata字符串