JQuery/Ajax-使用preventDefault()后表单未提交
我已经看到了关于这个话题的几个问题和答案。但是经过几个小时的测试。。。没有人为我工作过。。谁能帮我解决这个问题JQuery/Ajax-使用preventDefault()后表单未提交,jquery,ajax,Jquery,Ajax,我已经看到了关于这个话题的几个问题和答案。但是经过几个小时的测试。。。没有人为我工作过。。谁能帮我解决这个问题 $(document).ready(function() { $( "#search_form" ).on('submit',function(event) { event.preventDefault(); var form = $(this); $.ajax({ url: "ajax_validate.php", type:
$(document).ready(function() {
$( "#search_form" ).on('submit',function(event) {
event.preventDefault();
var form = $(this);
$.ajax({
url: "ajax_validate.php",
type: 'POST',
data: {host:host},
dataType: 'json',
success: function (data) {
if (data.status == 'ok'){
form.submit();
}
});
});
这给了我一个无限循环。。。
我的任务是:
-阻止表单提交的默认操作。
-如果data.status==确定,则提交表单。
$('form')。关于('submit',函数(e){
e、 预防默认值();
console.log('submit provented');
setTimeout(函数(){
//提交基础表单元素以绕过jquery处理程序
e、 target.submit();
}, 3000);
});代码>
提交我
我试图回答Lars的问题,但仍然出现错误:
Uncaught TypeError: event.target.submit is not a function
Uncaught TypeError: form.submit is not a function
我实现这一点的唯一方法是在函数中抛出ajax查询,然后根据函数的结果来允许或拒绝帖子。我还必须添加'async:false'来强制ajax等待查询响应,以允许code=变量完成。请参见下面的代码:
var x = ajax();
if(x == 0){
event.preventDefault();
}
function ajax(){
code = null;
$.ajax({
url: "ajax_validate.php",
type: 'POST',
async:false,
data: {host:host},
dataType: 'json',
success: function (data) {
if (data.status == 'ok'){
code = 1;
}else if(data.status == 'error'){
code = 0;
}
});
return code;
}
从您的代码中,您所做的是提交表单,并在成功后再次提交表单。应为无限循环。你为什么在成功后提交表格?我想我的描述不清楚。。。很抱歉一旦用户单击表单上的提交按钮。无法使用event.preventDefault()对其进行POST。然后执行ajax查询。如果该查询的返回状态为“ok”,则表单将被提交,否则,用户将保留在表单页面上。感谢您的回复。我在函数中使用ajax请求尝试了您的方法。但是它返回了一个错误。。未捕获的TypeError:event.target.submit不是一个函数P.S-我必须在代码中使用ajax。你说的“函数内部”是什么意思?我在回答中只使用了setTimeout来显示提交和下一次提交之间的延迟。这个答案带来的好处,实际上,您在代码中唯一要更改的就是更改var form=$(这个)代码>至var形式=此
这将导致对元素而不是jQuery对象执行以下form.submit()
@LEO505否则您的逻辑将是event.target.submit()
,因为您将参数命名为回调event
,而不是像我的逻辑那样命名为e
。使用event或form.submit方法都会返回错误。使用form.submit()方法(uncaughttypeerror:form.submit不是一个函数)-var form=这也是编码的。使用event.target.submit()方法(uncaughttypeerror:event.target.submit不是函数)-我在函数argue中对事件进行了编码,然后我需要查看您正在做什么/尝试什么,因为您可以通过在此站点上运行解决方案看到,它是有效的。