PHP返回正确的JSON,但它破坏了jQuery $ .each函数

时间:2014-01-07 02:36:55

标签: javascript php jquery ajax json

我正在使用

 $.each(txt2,function(index,item){
$("#selectSection").append($("<option></option>").attr("value", item.sectionId).text(item.sectionText));

如果我硬编码以下json:

 [{"sectionId":"1","sectionText":"Section One"},{"sectionId":"2","sectionText":"Section Two"},{"sectionId":"3","sectionText":"Section Three"},{"sectionId":"4","sectionText":"Section Four"},{"sectionId":"5","sectionText":"Hull"},{"sectionId":"6","sectionText":"Topside"}]

然而,当PHP返回时,json包含多个数组的名称,如下所示,这会破坏代码。

 {"sections":[{"sectionId":"1","sectionText":"Section One"},{"sectionId":"2","sectionText":"Section Two"},{"sectionId":"3","sectionText":"Section Three"},{"sectionId":"4","sectionText":"Section Four"},{"sectionId":"5","sectionText":"Hull"},{"sectionId":"6","sectionText":"Topside"}]}

有什么想法吗?

对于背景,以下是我正在使用的代码。该代码与实际的ajax查询结果完全一致,并且json是硬编码的。我只为背景提供它。

$.ajax({
url:"querySections3.php",
datatype: "json",
success:function(result){
  //txt1 = result;
    txt2 = [{"sectionId":"1","sectionText":"Section One"},{"sectionId":"2","sectionText":"Section Two"},{"sectionId":"3","sectionText":"Section Three"},{"sectionId":"4","sectionText":"Section Four"},{"sectionId":"5","sectionText":"Hull"},{"sectionId":"6","sectionText":"Topside"}]
 //options = JSON.parse(txt1);          
   $.each(txt2,function(index,item){
    $("#selectSection").append($("<option></option>").attr("value", item.sectionId).text(item.sectionText));
   });  

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你不能只取消引用内部数组:

options = JSON.parse(txt1).sections;
$.each(options,function(index,item){

您还可以在PHP端更改数据结构。

答案 1 :(得分:0)

您可以根据所需的结构调整PHP JSON输出,但如果它不可行,那么您可以调整javascript代码以迭代sections而不是根。此外,您不需要在javascript中解析JSON字符串。

$.ajax({
url:"querySections3.php",
datatype: "json",
success:function(result){
    txt1 = result;
   $.each(txt1["sections"],function(index,item){
    $("#selectSection").append($("<option></option>").attr("value", item.sectionId).text(item.sectionText));
   });