用jquery打印json对象

时间:2014-02-06 15:07:30

标签: jquery ajax json

我有打印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"); 
        }
    }
  });

它让我在这两个警报中都没有定义。

有人可以帮忙吗?

UPDATE defines_en.php文件:

 <?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);
 ?>

UPDATE 2 alert(JSON.stringify(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"}

3 个答案:

答案 0 :(得分:2)

complete不会返回您的json对象,它只返回xhr请求和状态文本。尝试使用successdone

// 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')
}});

文档:http://api.jquery.com/jquery.ajax/