AJAX中response.message的未定义值

时间:2017-09-13 20:41:11

标签: php ajax response

我尝试将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
        }
    }

2 个答案:

答案 0 :(得分:2)

我通常处理此问题的方法是解析JSON响应以使其成为JavaScript对象(使用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
    }
}

替代

您还应该能够在使用标题

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

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

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

答案 1 :(得分:-1)

undefined不是msg,未定义可能是从document.getElementById('test')返回。