我做了一个ajax来阻止表单提交验证
我正在通过将ajaxs返回存储在隐藏变量中来进行验证...
我的表单因为在我的其他循环中返回false而未提交
在Ajax返回成功之后,我从jquery提交表单但是我正在未捕获类型错误:对象#的属性“提交”不是函数 请帮助我.....
我只是在隐藏字段中存储值1,我从test.php ....
获取但是控制台在$(“#foo”)[0] .submit();上显示错误。
如果我点击提交第二次JavaScript检查隐藏值= 1并进入真正的循环...然后获取提交
提前谢谢
<form id="foo" name="foo" action="pop.php" method="get">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input id="bar1" name="bar1" type="text" value="" />
<input type="hidden" name="statushidden" id="statushidden" value=""/>
<input type="submit" value="submit" id="submit" />
</form>
$(document).ready(function() {
$("#submit").click(function() {
var $form = $(this);
var status = validdata();
if (document.getElementById("statushidden").value=="1")
{
alert("true loop");
return true;
}
else
{
alert("false loop");
return false;
}
});
function validdata()
{
var url = "test.php";
$.ajax({
type: "POST",
beforeSend: function(){},
url: url,
data: $("#foo").serialize(), // serializes the form's elements.
success: function(data)
{
document.getElementById("statushidden").value=data;
console.log($("#foo")[0].submit);
$("#foo")[0].submit(); ///// SHOWING Error on this line///////
}
});
}
});
答案 0 :(得分:1)
您需要告诉contentType:"Application/Json"
。您可以阻止默认操作。一旦ajax完成,你调用submit方法。
$("#submit").click(function(e) {
e.preventDefault();
var $form = $(this);
// your rest code.
});
尝试这样的ajax方法。
$.ajax({
url:url,
data:$("#foo").serialize(),
contentType:"Application/Json";
.... your success blocks.
});
如果您提交方法有问题。然后试试这个
$("form").submit(); ///// Error on this line will be fixed///////
答案 1 :(得分:0)
请从以下功能中删除[0]来检查
function validdata()
{
var url = "test.php";
$.ajax({
type: "POST",
beforeSend: function(){},
url: url,
data: $("#foo").serialize(), // serializes the form's elements.
success: function(data)
{
document.getElementById("statushidden").value=data;
$("#foo").submit(); ///// Removed [0] from your given snippet ///////
}
});
}