ajax中的json响应是正确的,但内容不更新?

时间:2015-03-12 12:15:16

标签: javascript jquery ajax json

我有一个像这样调用的脚本:

success: function(json) {
        if(json.valid == 1) {

            // some other show/hide here that works correctly
            $("#div-response-" + id).html(json.message);

        }
        else {
            // some other show/hide here that works correctly
            $("#div-response-" + id).html(json.message);
        }
    }

并返回如下响应:

{"valid":"1","message":"<span class=\"icon color-red\"><\/span>"}

{"valid":"0","message":"<span class=\"icon color-black\"><\/span>"}

,HTML代码为:

<div id="div-response-<?=$id;?>" data-id="<?=$id;?>"></div>

出于某种原因,我无法弄清楚为什么......一切正常,直到div应该更新信息。它只是空着。

4 个答案:

答案 0 :(得分:2)

如果你没有在ajax param中使用类型JSON,请使用jQuery.parseJSON()函数将服务器的响应转换为JSON。

json = jQuery.parseJSON(json);

答案 1 :(得分:0)

假设服务器响应具有有效的JSON标头(即header('Content-type: application/json');),则不需要JSON.parse()或$ .parseJSON

另外,请检查影响范围的.icon.color-red .color-black类的CSS。也许你的代码工作正常,但由于CSS

而没有显示任何内容

答案 2 :(得分:0)

好像你想用json中的消息更新你的div。尝试使用 eval 功能。您可能还需要解析json

success: function(json) {
    var json = jQuery.parseJSON(json);
    if(json.valid == 1) {

        // some other show/hide here that works correctly
        $("#div-response-" + id).html(eval(json.message));

    }
    else {
        // some other show/hide here that works correctly
        $("#div-response-" + id).html(eval(json.message));
    }
}

答案 3 :(得分:0)

在ajax请求中将dataType设置为json,并确保您的服务器生成json数据(content-type标头设置为application/json

$.ajax({
    url: '/something',
    dataType: 'json',
    success: function(json) {
        if(json.valid == 1) {

            // some other show/hide here that works correctly
            $("#div-response-" + id).html(json.message);

        }
        else {
            // some other show/hide here that works correctly
            $("#div-response-" + id).html(json.message);
        }
    }
});