AJAX 中 response.message 的未定义值

Undefined value for response.message in AJAX

我正在尝试将 response.message 作为内容显示到 ID 为 test 的标签。它显示为未定义。

    success:function(response){
        console.log("response"+response); // works
        var msg = response.message; 
        if(response.status=="success"){
            console.log("response1"+msg); 
             document.getElementById('test').innerHTML = msg; //undefined
        } else {
            jQuery('#test').contents(msg);
            document.getElementById('test').innerHTML = msg; //undefined
        }
    }

我通常处理这个问题的方法是解析 JSON 响应,使其成为 JavaScript object(使用 JSON.parse),试试下面的代码.

success: function(response) {
    console.log("response" + response);
    response = JSON.parse(response);
    var msg = response.message; // works
    if (response.status == "success") {
        console.log("response1" + msg); // prints/works
        document.getElementById('test').innerHTML = msg; //undefined
    } else {
        jQuery('#test').contents(msg);
        document.getElementById('test').innerHTML = msg; //undefined
    }
}

备选方案

您还应该能够在使用 headers

输出之前在 PHP 页面本身上设置内容类型
header("Content-type:application/json");

您还可以在 ajax 调用中将数据类型设置为 json,这是非常标准的

$.ajax({
    type: "POST",
    url: "",
    dataType: "json",
    success: function(msg) {
        //process success
    }
    ...
});

undefined 不是 msg,undefined 可能是来自 document.getElementById('test').

的 return