打印输出JSON数组返回

时间:2012-08-14 作者:Josef Young

我有以下JSON数组:

[{"occurences":"1","post_title":"Test 1","ID":"16"},    
 {"occurences":"1","post_title":"Test 2","ID":"19"},
 {"occurences":"1","post_title":"\\u543b\\u60a8\\u7684\\u5c41\\u80a1","ID":"21"}] 
我使用这个js来解析和打印它:

success:function(data){
     $.each(data, function(i, post){
     content = \'\';
     content += \'<li>\' + post.post_title + \'</li>\';
   });

   $(content).appendTo("#search-results");

   }
但显示屏上只显示“未定义”,控制台上没有显示错误。

如果您问,这是HTML部分:

<form id="search" action="">
<div class="toolbar">
    <h1>Search</h1>
    <a href="#" class="back">Back</a>
</div>
<ul class="rounded">
    <li><input type="text" name="search-text" placeholder="Search" id="search-text" /></li>
</ul>
<ul class="edgetoedge" id="search-results">
    <li class="sep">Results</li>                
</ul>
</form>
有什么线索吗?非常感谢!

3 个回复
最合适的回答,由SO网友:Josef Young 整理而成
$.ajax({

                  url: \'http://mypath/wp-admin/admin-ajax.php\',

                  data:{
                       \'action\':\'go_ajax\',
                       \'fn\':\'spw_autosuggest\',  
                       \'queryString\': $.trim(inputString.val())
                       },  

                  dataType: \'JSON\',

                  success:function(data){
                            // this part is what happens with the JSON data

                            //console.log(data);

                            var content = \'\';
                            var data = $.parseJSON(data);

                            $.each(data, function(i, post) {
                                content += \'<li>\' + post.post_title + \'</li>\';
                            });

                            $(content).appendTo("#search-results");
                    },

                    error: function(errorThrown){
                       alert(\'error\');
                       console.log(errorThrown);
                    }

        });  
SO网友:Martin Zeitler

为请求设置正确的数据类型是上面的回答中没有考虑的一个重要细节(这会导致jQuery随请求发送一个HTTP Accept标头,并且它也会在成功回调中预期JSON数据):

dataType: \'json\',
success:function(json){
   var content = \'\';
   jQuery.each(json, function(i, v){
      content += \'<li>\' + v.post_title + \'</li>\';
   });
   /* like this the results won\'t cummulate */
   jQuery("#search-results").html(content);
}
也没有考虑将正确的HTTP标头与响应一起发送:

header("content-type: application/json; charset=utf8");
Internet Exploder不喜欢这个标题,但这是另一个故事(read more).

SO网友:Jasper Denkers

添加var json = jQuery.parseJSON(data);content 通过添加var contentcontent = \'\'; before 每个循环如下:

function (data) {
    var content = \'\';
    var json = jQuery.parseJSON(data);

    $.each(json, function(i, post) {
        content += \'<li>\' + post.post_title + \'</li>\';
    });

    $(content).appendTo("#search-results");
}

结束

相关推荐

Storage of array in settings

我正在创建一个插件,它将存储一些在短代码中使用的简单布局。短代码的用法类似于[shortcode layout=\"name\"]考虑到这一点,我需要将数组中的每个布局存储为键/值设置键=布局名称值=布局标记我想将这些存储在设置中,但我不知道如何进行。如何创建允许添加和编辑的设置页面。通常我的设置页面使用如下代码,并自动连接到api。<input type=\"text\" id=\"company_name\" name=\"wpv_settings[company_name]\" value=\