我有一个像这样调用的脚本:
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应该更新信息。它只是空着。
答案 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);
}
}
});