这可能是非常简单的修复方法。我发布到一个php页面,它返回在db-中创建的新元素的ID(通过$.ajax
发布) - 我已经记录了返回的值。
以下代码是我用来发布的代码
$.ajax({
type: "POST",
url: "<?=base_url()?>events/add_tag_js/",
data: url,
success: function(html){
$("#tag_list").append('<li><span id="" class="tag">'+formvalue+'<span class="remove_tag"><a class="remove_tag_link" href="#">x</a></span></span></li>');
$("#add_tag").val('');
console.log(html);
},
failure: function(){
$('.error').show();
$("#add_tag").val('');
}
});
console.log的返回值是
{"error":false,"msg":"Tag added","id":44}
但当我alert(html.id)
时,我得到了未定义的内容?我需要解析返回的json吗?或者我的json是不正确的?
答案 0 :(得分:2)
也许您没有在服务器端脚本上设置正确的内容类型,因此jQuery不知道这是JSON。因此,要么在服务器脚本上将内容类型设置为application/json
,要么也可以使用dataType
参数指示您在请求中预期JSON:
...
type: "POST",
url: "<?=base_url()?>events/add_tag_js/",
data: url,
dataType: 'json', // indicate that you expect JSON from the server
...
虽然建议您的服务器端脚本设置正确的内容类型。
答案 1 :(得分:0)
尝试告诉它将其作为Json处理,在您的情况下,html是一个String,因此您必须使用var myObj = eval(html);哪个不好
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});