Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery/Ajax-使用preventDefault()后表单未提交_Jquery_Ajax - Fatal编程技术网

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中对事件进行了编码,然后我需要查看您正在做什么/尝试什么,因为您可以通过在此站点上运行解决方案看到,它是有效的。