【发布时间】: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> ';
html += +ep.value+'</td></tr>';
} );
html += '</html>';
$('#results').replaceWith( html );
} );
} );
} );
</script>
【问题讨论】: