2016-09-18 91 views
1

我有一个输出一些JSON的PHP页面。加载页面后,我想用jQuery AJAX输出JSON。但是,什么都没有发生。 alert()对话框没有出现,也不能与JavaScript控制台一起使用。我的jQuery AJAX调用有什么问题?使用jQuery从PHP输出JSON页面

<script type="text/javascript"> 
jQuery.ajax({ url: 'http://www.domain.com/page.php', 
    dataType: 'json', 
    success: function(data) { 
     var obj = jQuery.parseJSON(data); 
     alert(obj.json_array[0]); 
     alert(obj.json_array[1]); 
     alert(obj.json_array[2]); 
    } 
}); 
</script> 

的PHP是:

<?php 
$array = [ 
    'foo' => 'bar', 
    'bar' => 'foo', 
    'int' => 4 
]; 

$json_array = json_encode($array); 
echo $json_array; 
?> 

回答

1

在PHP中,可以有阵列,其中每个元件具有键和值,但是一旦你在JavaScript解析它,即成为一个对象。所以使用[0][1][2]是无效的。您必须使用foobarint。此外,当您回显一个字符串时,保存字符串的变量的名称不会以任何方式保存。唯一保存(回显)的就是字符串。在你的例子中,echo $json_array;回声{"foo":"bar","bar":"foo","int":4},当它被解析时,你会得到一个对象。所以你不需要说obj.json_array,你只是说obj。因此,要解决您的问题,

更换

alert(obj.json_array[0]); 
alert(obj.json_array[1]); 
alert(obj.json_array[2]); 

alert(obj.foo); 
alert(obj.bar); 
alert(obj.int); 
+0

嗨Howzieky,我改变了它提醒(obj.foo);但仍然没有发生。没有警报,它也不能在JavaScript控制台中工作。 –

+0

你可以在设置'obj'之后立即加入'console.log(obj)'吗?它说什么? – Howzieky

+0

我得到:Uncaught ReferenceError:obj未定义 –