Php $。除fire fox 3.6外,每个都不工作
我有一个json,如下所示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
{"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。