2012-04-27 100 views
0

案例1:什么不适合我?JSON/XML解析和jQuery回调处理输出json

$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像上面那样在浏览器上呈现记录集。完美的工作。

现在比parsiong JSON和XML壳体1和2 ofcourse其他之间的唯一区别是值的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> 

回答

1

你不能这样做的。每个$()具有非零索引键的对象上。方法两个作品的原因是因为它将它作为一个对象数组而不是一个对象返回。

使用方法二,或通过循环的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

+0

谢谢TomHallam:这确实有帮助。现在我得到了稍微不同的json对象。我已经发布了另一个问题:http://stackoverflow.com/questions/10354892/different-output-json-formats。你的帮助将不胜感激,我是一个绝对的初学者在用户界面:) – Yavar 2012-04-27 17:05:46