Php $。除fire fox 3.6外,每个都不工作

Php $。除fire fox 3.6外,每个都不工作,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我有一个json,如下所示 {"DataList": {"Data":[ {"@attributes":{"description":"FGFGFGH","code":"FGFGFGH"}}, {"@attributes":{"description":"UIS default relying party","code":"UIS"}}, {"@attributes":{"description":"MDEx Healthcare Portal","code":"M

我有一个json,如下所示

 {"DataList":
  {"Data":[
    {"@attributes":{"description":"FGFGFGH","code":"FGFGFGH"}},
    {"@attributes":{"description":"UIS default relying party","code":"UIS"}},
    {"@attributes":{"description":"MDEx Healthcare Portal","code":"MDE"}},
    {"@attributes":{"description":"VBK","code":"VBK"}},
    {"@attributes":{"description":"Omnicare","code":"OC"}},
    {"@attributes":{"description":"MDEX","code":"MDEX"}},
    {"@attributes":{"description":"Bank of America","code":"BOA"}},
    {"@attributes":{"description":"LDAP","code":"LDAP"}},
    {"@attributes":{"description":"JetBlue","code":"JB"}},
    {"@attributes":{"description":"Digital Signature Demo Application","code":"DEMODS"}}
      ]
  }
}
我在jquery代码下面创建选择框选项

$.each(response, function(i, DataList) {
                $.each(DataList,function(j,Data){
                    var finalObj = Data.@attributes;
                    options += '<option value="' + finalObj.code + '">' + finalObj.description + '</option>';
                });
                $("#relyingpartyall").html(options); 
            });
$。每个(响应、函数(i、数据列表){
$。每个(数据列表,函数(j,数据){
var finalObj=数据。@属性;
选项+=''+finalObj.description+'';
});
$(“#relyingpartyall”).html(选项);
});
上述代码在firefox 3.6中运行良好,但在firefox 10,11、chrome、safari和ie中,如果不运行,则会出现以下错误

Firefox 11 : can't convert AttributeName to string ,var finalObj = Data.@attributes;

      Chrome : Unexpected Identifier @ line "options += '<option value="' + finalObj.code + '">' + finalObj.description + '</option>';"
firefox11:无法将AttributeName转换为string,var finalbj=Data.@属性;
Chrome:意外标识符@line“options+=''+finalObj.description+''
有人能帮我解决这个问题吗?

试试这样:

var finalObj = Data["@attributes"];
或者直接访问单个
$中的数据数组。每个
:

var relyingpartyall = $('#relyingpartyall');
relyingpartyall.empty();
$.each(response.DataList.Data, function(i, item) {
    var attributes = item["@attributes"];
    relyingpartyall.append(
        $('<option/>', {
            value: attributes.code,
            html: attributes.description
        })
    );
});
​
var relyingpartyall=$('relyingpartyall');
relyingpartyall.empty();
$.each(response.DataList.Data,函数(i,项){
var attributes=item[“@attributes”];
relyingpartyall.append(
$('', {
值:attributes.code,
html:attributes.description
})
);
});
​

我得到两个不同的响应,如下面的类型1:
{“数据列表”:{“数据”:{“@attributes”:{“描述”:“fgfgh”,“代码”:“fgfgh”}}}}}
类型2:
{“数据列表”:{“数据”:[{“属性”:{“描述”:“fgfgh”,“代码”:“fgfgh”}}},{“@attributes”:{“描述”:“UIS默认依赖方”,“代码”:“UIS”}}}}}}
对于第二种类型,您的代码工作正常,但对于第一种响应,它不起作用:(@TechieSathish,是的,它不起作用,因为在第一个示例中,
数据
不是数组。使用属性表示多个项目是一种糟糕的方式。在这种情况下,您应该保留原始循环,或者如果您可以控制JSON的生成,请修复它,以便您始终将数据作为数组。感谢您的快速回复。res我正在使用json_encode php函数生成ponse。