2012-01-06 199 views
0

这可能是一个很容易修复的问题。我张贴到一个PHP页面,返回在db-中创建的新元素的ID(通过$.ajax发布) - 我记录了返回的值。访问json数组元素

下面的代码是我使用的代码发布

$.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不正确?

回答

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 
... 

虽然建议在您的服务器端脚本设置适当的内容类型。

0

试着告诉它把它当作Json来处理,在你的情况下,html是一个String,所以你必须去var var myObj = eval(html);这是不好的

$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    success: callback 
});