Javascript 通过AJAX访问时,$\u POST出现未定义的索引错误

Javascript 通过AJAX访问时,$\u POST出现未定义的索引错误,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试使用ajax显示从php登录的结果。但这不是工作。像这样显示未定义的索引是错误的 注意:未定义索引:中的userEmail 第10行的C:\xampp\htdocs\controllers\login.controllers.php 注意:中未定义的索引:userPassword 第10行的C:\xampp\htdocs\controllers\login.controllers.php 登录失败 以下是我的源代码: login.views.php <form id="login

我正在尝试使用ajax显示从php登录的结果。但这不是工作。像这样显示未定义的索引是错误的

注意:未定义索引:中的userEmail 第10行的C:\xampp\htdocs\controllers\login.controllers.php

注意:中未定义的索引:userPassword 第10行的C:\xampp\htdocs\controllers\login.controllers.php

登录失败

以下是我的源代码: login.views.php

<form id="loginForm" action="/controllers/login.controllers.php" method="post">
    <input id ="userEmail" type="text" name="userEmail" placeholder="Email">
    <input id ="userPassword" type="password" name="userPassword" placeholder="Password">
    <button id ="loginSubmit" type="submit" name="loginSubmit">Login</button>
    <div id="msg"></div>
</form>
更新问题:
现在我想在点击提交按钮后添加消息“等待”,在显示结果消息时隐藏它。我该怎么办?。谢谢。

试试这个:

$("#loginSubmit").click(function(){
   if ($("#userEmail").val() == "" || $("userPassword").val() == ""){
       $("div#msg").html("Please enter your email and password");
   }else{
       var formData = new FormData($("#loginSubmit")[0]);
       $.ajax({
          url: $("#loginForm").attr("action"),
          type: 'POST',
          data: formData,
          async: false,
         dataType: "json",
         success: function (data) {
            //here success
          },
         cache: false,
         contentType: false,
         processData: false
         });
   }

   $("#loginForm").submit(function(){
       return false;
   })
});
用这个

$("#loginForm").serialize()
而不是

 $("#loginForm:input").serializeArray()

您应该需要在
表单上调用
serialize()
,而不是在输入列表上调用
serializeArray()
。试试这个:

$.post(
    $("#loginForm").attr("action"),
    $("#loginForm").serialize(),
    function(data){
        $("div#msg").html(data);
    }
);
函数之间的区别在于输出的格式
serializeArray()
返回一个对象,该对象的格式可能不适合您的接收端点,并且
serialize()
将表单的值转换为查询字符串。

您必须使用

 $.post(
       $("#loginForm").attr("action"),
       $("#loginForm:input").serialize(),
       function(data){
           $("div#msg").html(data);
       }

请尝试
$(“#loginForm”).serialize()
而不是
$(“#loginForm:input”).serializeArray()
谢谢。成功了。但是你能解释一下他们之间的不同吗?我为你添加了一个答案。现在我想在点击提交按钮后添加消息“等待”,在显示结果消息时隐藏它。我该怎么办?。Tks
$.post(
    $("#loginForm").attr("action"),
    $("#loginForm").serialize(),
    function(data){
        $("div#msg").html(data);
    }
);
 $.post(
       $("#loginForm").attr("action"),
       $("#loginForm:input").serialize(),
       function(data){
           $("div#msg").html(data);
       }