Javascript 为什么在ajax请求的成功函数中e.status变得未定义?

Javascript 为什么在ajax请求的成功函数中e.status变得未定义?,javascript,jquery,html,Javascript,Jquery,Html,我得到的回复是{“状态”:true}。但是,当我执行console.log(即status)时,我得到的是未定义的 当我执行console.log(e)时,我得到{“status”:true} 这是我的ajax请求 $("#msgfrm").on("submit", function(e) { event.preventDefault(); var name = $("#name").val(); var email = $("#email").val(); $.ajax({

我得到的回复是{“状态”:true}。但是,当我执行console.log(即status)时,我得到的是未定义的

当我执行console.log(e)时,我得到{“status”:true}

这是我的ajax请求

$("#msgfrm").on("submit", function(e) {
  event.preventDefault();
  var name = $("#name").val();
  var email = $("#email").val();
  $.ajax({
    url: 'ajaxinsert.php',
    method: 'POST',
    data: {
      name: name,
      email: email
    },
    success: function(e) {
      console.log(e);
      console.log(e.status);
      if (e.status === 'true') {
        alert("success");
      } else {
        alert("Fail");
      }
    }
  });
});

请告诉我我的错误是什么???

这是因为您得到的结果是字符串。在使用它之前尝试解析它

    success:function(e){
                   var obj=jQuery.parseJSON(e);
                    alert(obj);
                    alert(obj.status);
}

当您运行
console.log(typeof e)时会发生什么?我猜这将打印
string
而不是
object
^此外,您可能只需要
JSON.parse(e)
将其从JSON
string
转换为实际的
对象。这就是说,在这种情况下,您可能需要验证是否返回
“true”
(作为
字符串)而不是
true
(作为
布尔值),因为
条件需要
字符串。是的,它正在打印字符串,但我已经传递了$response=array('status'=>true,);echo json_encode($response);}设置
数据类型:'json'
,因为您似乎还没有在服务器上设置内容类型头<然后将解析code>e
,以便只设置数据类型,解析将在内部完成,或者在出现解析错误时转到错误