【问题标题】:JSON/XML parsing & jQuery callback for processing output json用于处理输出 json 的 JSON/XML 解析和 jQuery 回调
【发布时间】:2012-04-27 16:32:31
【问题描述】:

案例 1:什么不适合我?

$phpObj=json_decode(file_get_contents($url),true);

在上面的 file_get_contents 中返回一个 json,我使用上面的方法将其转换为 php 对象,然后解析 $phpObj(提取某些字符串),它是一个多维数组,并形成一个新的键值数组,例如 $newObj。之后,我只需使用 json_encode 将 newObj 转换为 json。

我使用 jQuery 解析 $newObj 并将其呈现为 html。

案例 2:什么对我有用?

我没有解析 json,而是让我的服务器返回 XML,而不是像上面那样使用 json_decode:

$xmlDoc->load($url);

我解析 XML 创建 $newObj(键值对)然后我使用与上面相同的 jQuery 在浏览器上呈现记录集。工作得很好。

现在案例 1 和 2 当然除了解析 JSON 和 XML 的唯一区别是 jQuery 在渲染回调函数中接收到的值:

对于案例 1(不起作用):

{"1002":"I am Yavar","1003":"I work for XYZ","1004":"California is in US"}

对于案例 2(工作):

[{"1000":"California is in US","xmlNode":{}},{"1001":"I work for XYZ","xmlNode":{}}]

如果有人能帮助我了解情况 1 中出了什么问题,以及情况 2 中出现的方括号 ([]) 和 xmlNode 内容是否真的需要使其正常工作,那就太好了?

如果这里真的需要我的 jQuery 函数:

<script>
$(document).ready( function() {
$('#term').keyup( function() {

  $.get('search_json.php?q='+escape($('#term').val()), function(data) {
    html = '<table id="results">';
    $.each( data, function( ind, ep ) {
        html += '<tr><td class="document"><b>'+ind.key+'</b>&nbsp;';
        html += +ep.value+'</td></tr>';
    } );
    html += '</html>';
    $('#results').replaceWith( html );
  } );
} );
} );
</script>

【问题讨论】:

    标签: php jquery xml ajax json


    【解决方案1】:

    您不能对具有非零索引键的对象执行 $.each()。方法二有效的原因是它作为一个对象数组返回它,而不是一个对象。

    使用方法二,或者循环遍历你的 json 对象,然后简单地把它吐出来:

    $outObj = array(); // Don't forget to initialise your arrays!
    foreach($phpObj as $key => $value) {
       $value['key'] = $key;
       $outObj[] = $value; 
    }
    json_encode($outObj);
    

    创建一个内部数组,可以使用您建议的 Javascript 进行迭代。不过,您需要参考 ep.key 而不是 ind.key

    【讨论】:

    • 谢谢 TomHallam:这确实有帮助。现在我得到了稍微不同的 json 对象。我为此发布了另一个问题:stackoverflow.com/questions/10354892/…。您的帮助将不胜感激,我是用户界面的绝对初学者:)
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2023-03-04
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2013-10-15
    相关资源
    最近更新 更多