我有打印json对象的问题。在firebug中我可以看到这是从ajax调用返回的。
ABOUT
"Company"
CONTACT
"Contacts"
FAKTY
"Facts"
KARIERA
"Career"
等
这是我的ajax电话
$.ajax({
url: 'defines/defines_en.php',
dataType: 'json',
complete: function (data) {
if (data.status == 200){
alert(data['ABOUT']);
alert(data.ABOUT);
}
else {
alert("Nepodarilo sa zmeniť jazyk");
}
}
});
它让我在这两个警报中都没有定义。
有人可以帮忙吗?
<?php
$data = array(
'PORTFOLIO'=>'Portfolio',
'ABOUT'=>'Company',
'CONTACT'=>'Contacts',
'ZALOHOVANIE'=>'Backup and Archivation',
'KONSOLIDACIA'=>'Consolidation and Virtualization',
'MANAZMENT'=>'Management and Monitoring',
'NETWORKSEC'=>'Network security',
'SPRAVAKONC'=>'Správa koncových zariadení',
'FAKTY'=>'Facts',
'MGMT'=>'Management',
'REF'=>'References',
'KARIERA'=>'Career',
);
echo json_encode($data);
?>
{"readyState":4,"responseText":"{\"PORTFOLIO\":\"Portfolio\",\"ABOUT\":\"Company\",\"CONTACT\":\"Contacts\",\"ZALOHOVANIE\":\"Backup and Archivation\",\"KONSOLIDACIA\":\"Consolidation and Virtualization\",\"MANAZMENT\":\"Management and Monitoring\",\"NETWORKSEC\":\"Network security\",\"SPRAVAKONC\":\"Spr\\u00e1va koncov\\u00fdch zariaden\\u00ed\",\"FAKTY\":\"Facts\",\"MGMT\":\"Management\",\"REF\":\"References\",\"KARIERA\":\"Career\"}","responseJSON":{"PORTFOLIO":"Portfolio","ABOUT":"Company","CONTACT":"Contacts","ZALOHOVANIE":"Backup and Archivation","KONSOLIDACIA":"Consolidation and Virtualization","MANAZMENT":"Management and Monitoring","NETWORKSEC":"Network security","SPRAVAKONC":"Správa koncových zariadení","FAKTY":"Facts","MGMT":"Management","REF":"References","KARIERA":"Career"},"status":200,"statusText":"OK"}
答案 0 :(得分:2)
complete
不会返回您的json对象,它只返回xhr请求和状态文本。尝试使用success
或done
。
// one way
$.ajax({
url: 'defines/defines_en.php',
dataType: 'json',
success: function (data) {
alert(data['ABOUT']);
alert(data.ABOUT);
},
error: function (e) {
alert("Nepodarilo sa zmeniť jazyk");
}
});
// another way
$.getJSON('url')
.done(function (e) {
// success
})
.fail(function (e) {
// error
});
答案 1 :(得分:0)
您必须从数据对象获取responseText。试试这个。
$.ajax({
url: 'defines/defines_en.php',
dataType: 'json',
complete: function (data) {
if (data.status == 200){
response = data.responseText;
//alert(data['ABOUT']);
alert(response.ABOUT);
}
else {
alert("Nepodarilo sa zmeniť jazyk");
}
}
});
答案 2 :(得分:0)
“完整”回调和“成功”回调之间的jquery有所不同。
如果使用'complete',则传递的第一个参数是jqXHR对象,而不是直接所需的数据。所以你的所有属性都是未定义的。
如果您使用'success'回调,那么您将实际数据作为第一个参数,您可以按原样使用它们。 (除了你没有'status'属性这一事实外)
说:
$.ajax({
url: 'defines/defines_en.php',
dataType: 'json',
success: function (data) {
alert(data.ABOUT);
},
error: function(error) {
alert('error message here')
}});