Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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
在javascript中加载jQuery/ajax_Javascript_Php_Jquery_Ajax - Fatal编程技术网

在javascript中加载jQuery/ajax

在javascript中加载jQuery/ajax,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在表单中使用ajax,因为我不希望页面在提交后重新加载。 现在一切都正常了,但唯一的问题是每次单击submit按钮时ajax脚本都会运行 我想我可以在if语句中粘贴ajax,告诉它何时运行,何时不运行,但它不起作用。。有人知道为什么吗 theForm.onsubmit = function() { if (pion == 1 || myName.value.length == 0 || myMessage.value.length == 0) { if (pion == 1 || em

我在表单中使用ajax,因为我不希望页面在提交后重新加载。 现在一切都正常了,但唯一的问题是每次单击submit按钮时ajax脚本都会运行

我想我可以在if语句中粘贴ajax,告诉它何时运行,何时不运行,但它不起作用。。有人知道为什么吗

theForm.onsubmit = function() {
if (pion == 1 || myName.value.length == 0 || myMessage.value.length == 0) {
    if (pion == 1 || emailValid.value.length == 0) {
        emailValid.style.border = "1px solid red";
        myError.innerHTML = "U heeft geen geldig e-mail adres ingevoerd.";
    }       
    if (myName.value.length == 0) {
        myName.style.border = "1px solid red";
        myError.innerHTML = "U heeft geen naam ingevuld.";
    }
    if (myMessage.value.length == 0) {
    myMessage.style.border = "1px solid red";
    myError.innerHTML = "U heeft geen bericht ingevuld.";
    }
    return false;
}

else {
    // the ajax I found somewhere, that works but not in this if/else statement
    $(function () {
        $('form').bind('submit', function () {
          $.ajax({
            type: 'post',
            url: 'mail.php',
            data: $('form').serialize(),
            success: function () {
              alert('form was submitted');
            }
          });
          return false;
        });
    });



    return true;

}
}

此代码块:

$('form').bind('submit', function () {
      $.ajax({
        type: 'post',
        url: 'mail.php',
        data: $('form').serialize(),
        success: function () {
          alert('form was submitted');
        }
      });
      return false;
    });
绑定将AJAX请求发送到
表单
元素的
提交
事件的函数。一旦它这样做了,函数将永远保持绑定状态(或者至少在您明确定义它之前)。这就是为什么当您的代码第一次出现在
else
语句中时,每次提交表单时都会发送AJAX请求

这就是说,您的
if
/
else
逻辑应该在绑定到
表单的
提交事件的函数中,以便有条件地发送AJAX请求。比如:

$('form').bind('submit', function () {
      if (etc etc etc) {
        // do other things
      }
      else {
        // send AJAX
        $.ajax({
          type: 'post',
          url: 'mail.php',
          data: $('form').serialize(),
          success: function () {
            alert('form was submitted');
          }
        }
      });
      return false;
    });
//我在某处找到的阿贾克斯

将代码复制/粘贴到项目中而不知道该代码的作用是一个众所周知的坏主意


此代码不进行AJAX调用:

$(function () {
    // anything in here
});
这段代码的作用是告诉jQuery在文档准备就绪时执行该函数。但当您调用它时,文档可能已经准备好了,因为它发生在表单提交事件上

最多,取决于jQuery内部的工作方式,它可能会立即执行该内部函数。但是,您仍然不需要对jQuery进行包装调用

那么,这个函数在做什么呢

$('form').bind('submit', function () {
  // anything in here
});
同样,它实际上并没有执行任何AJAX代码。所有这些操作都是将函数绑定到表单的提交事件。该函数可能包含AJAX代码(在本例中确实包含),但此处不执行该代码。它将在下次提交表单时执行

但是,您每次提交表单时都会这样做。所以现在发生的是:

  • 用户按下submit,没有明显的变化。1个事件处理程序绑定到下一个提交事件
  • 用户按下submit,执行1个事件处理程序(AJAX),2个事件处理程序现在绑定到下一个submit事件
  • 用户按下submit,执行2个事件处理程序(AJAX),4个事件处理程序现在绑定到下一个submit事件
  • 等等

如果要在
else
块中调用AJAX代码,则只需在
else
块中调用它:

if (/* ... */) {
  // ...
} else {
  $.ajax({
    type: 'post',
    url: 'mail.php',
    data: $('form').serialize(),
    success: function () {
      alert('form was submitted');
    }
  });
}

还有一个问题。。如果我在else语句中添加其他代码行,它将不再工作。。知道为什么吗?因此,我还想在“else”中添加这行代码:
myMessage.value=“”@user3124133:定义“它不工作”。显示您正在使用的实际代码并描述错误。
else{myMessage.value=”“;$.ajax({type:'post',url:'mail.php',data:$('form').serialize(),success:function(){});返回false;}
这就是ELS中的全部代码ajax部分不再工作,因为如果我添加myMessage部分,提交后我不会收到邮件。@user3124133:“因为我没有收到邮件”并不是一个真正有意义的调试过程。使用浏览器的调试工具。JavaScript控制台中是否存在任何错误?在调试器中单步执行代码时,它是否会执行?是否向服务器发出AJAX请求?服务器的响应是什么?您需要调试代码,不要将其视为黑盒。