案例 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,它在浏览器上呈现记录集。工作得很好。
现在除了解析 JSON 和 XML 之外,案例 1 和 2 之间的唯一区别是 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 中出了什么问题,并且方括号 ([]) 和 xmlNode 的内容是否真的需要在案例 2 中使其工作,那就太好了?
如果真的需要这里是我的 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>