具有多个返回值的Javascript和PHP ajax调用返回未定义

时间:2019-04-16 11:53:32

标签: javascript php ajax

我有以下代码,我正在尝试使用这些代码进行AJAX调用,该调用可以返回多个值

    // Make an ajax call to insert a new row.
    // Newer jquery uses done and fail instead of success and error.
    $.post("add_row_item.php", {
      work_order_id: 1
    }).done(function(data) {
      // Ajax request was successful.
      console.log(data);
      // Check if database query produced errors.
      if(data.error != "") {
        alert('Error trying to add a row - ' + data.error);
      }
    }).fail(function(xhr, status, error) {
      // Ajax request failed.
      var errorMessage = xhr.status + ': ' + xhr.statusText;
      alert('Error trying to add a row - ' + errorMessage);
    });

PHP代码对返回消息进行如下编码:

echo json_encode(array("error" => "Error: " . mysqli_error($con)));

我在浏览器控制台上得到以下信息:

{"error":"Error: Table 'db.tutorials' doesn't exist"}

但是警报在消息中给了我undefined

Error trying to add a row - undefined

有人知道我的警报部分出了什么问题吗?

1 个答案:

答案 0 :(得分:3)

data实际上是一个字符串,'{"error":"Error: Table 'db.tutorials' doesn't exist"}'。您可以使用JSON.parse将其转换为对象:

data = JSON.parse(data);

或指定

dataType : "json"

转到您的ajax调用,它将在收到回执后自动转换(请参见manual)。