jQuery.getJSON()不起作用

时间:2014-08-25 11:11:27

标签: javascript php jquery json

我正在尝试从我的php脚本中获取JSON数组。以下是我在jsp文件中编写的Jquery代码 -

$(document).ready(function()
            {
                    alert("Inside Ready");
                    $.getJSON('http://example.com/root_dir/test_json.php', function(data)
                    {
                        alert(data); 
                    });

            });

但是,上面的代码只显示外部警报(即警报(“内部就绪”);)并且没有显示内部警报(即警报(数据);)。当我在浏览器中点击URL时,我得到了预期的json。所以肯定在URL和php脚本中没有问题。

以下是 test_json.php

<?php

//Create an array
$json_response = array();

        $row_array['label'] = 'A';
        $row_array['value'] = $row['0 to 2'];
        $row_array['color'] = '#FA2020';

         array_push($json_response,$row_array);

        $row_array['label'] = 'B';
        $row_array['value'] = $row['2 to 3'];
        $row_array['color'] = '#2BD95A';

         array_push($json_response,$row_array);

        $row_array['label'] = 'C';
        $row_array['value'] = $row['above 3'];
        $row_array['color'] = '#F7F739';

        //push the values in the array
        array_push($json_response,$row_array);

   echo json_encode($json_response); 
?>

在浏览器中点击URL时获取以下json -

[{"label":"A","value":"19","color":"#FA2020"},{"label":"B","value":"1","color":"#2BD95A"},{"label":"C","value":"2","color":"#F7F739"}]

我正在使用 jquery-1.10.2.js 。谢谢..!

3 个答案:

答案 0 :(得分:2)

试试这个......希望这对你有用

        $(document).ready(function()
        {
            $.ajax({
                    type:'POST',
                    url:'http://example.com/root_dir/test_json.php',
                    dataType:'JSON',
                    data:{
                    },
                    success:function(data1){
                            alert(data)
                    },
                    error:function(XMLHttpRequest,textStatus,errorThrown){
                        alert("error");
                    }

                });
       });

答案 1 :(得分:0)

您的代码似乎运行正常 - 我刚刚用你的代码创建了一个测试页面,它可以运行 -

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
    alert("Inside Ready");
    $.getJSON('http://<<CHANGE SERVER NAME>>/zz-test/get_json.php', function(data)
    {
        alert(data);
    });
});
</script>
</head>
<body>
</body> 
</html>

答案 2 :(得分:0)

你的jQuery和PHP代码看起来很好,根据我的经验,它通常是从另一个域调用你的PHP脚本引起的错误(即:file:///)。如果您可以访问浏览器的控制台,您应该能够看到这是否实际上是导致数据无法显示的错误。

一个解决方案是在PHP代码的顶部添加:header('Access-Control-Allow-Origin: *');。然而,这有一些安全问题,因此不应永久使用。

或者,您可以将所有HTML,CSS,JS,jQuery等代码上传到托管PHP文件的Web服务器,这是一个更好的选择。

最后,如果上面的选项不可用,你可以使用JSON-P(虽然这不适用于POST请求),但在Simple jQuery, PHP and JSONP example?

有一个问题。