【问题标题】:jQuery.getJSON() Not workingjQuery.getJSON() 不工作
【发布时间】:2014-10-18 12:37:43
【问题描述】:

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

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

            });

但是,上面的代码只显示了外部警报(即 alert("Inside Ready");)而不显示内部警报(即 alert(data); )。当我在浏览器中点击 URL 时,我得到了预期的 json。所以 URL 和 php-script 肯定没有问题。

以下是 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。谢谢你..!

【问题讨论】:

  • 查看浏览器的开发者工具。重新加载页面。 JavaScript 控制台说什么?您能在 Net 选项卡中看到您的 Ajax 请求吗?格式是否正确?它得到回应了吗?回答正确吗?
  • 你的 PHP 告诉浏览器它正在发送 HTML,你应该在里面有 header("Content-Type: application/json");
  • 将错误处理程序添加到您的 ajax 调用中!
  • 我认为您的 http 请求不包含 Access-Control-Allow-Origin 标头。请检查一下
  • 终于找到了解决方案。实际上有“无传输”错误,所以参考上面链接stackoverflow.com/questions/9160123/…上的答案,我只是放置了“$.support.cors = true;” http请求前的声明。

标签: javascript php jquery json


【解决方案1】:

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

        $(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");
                    }

                });
       });

【讨论】:

    【解决方案2】:

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

    <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>
    

    【讨论】:

      【解决方案3】:

      您的 jQuery 和 PHP 代码看起来不错,所以根据我的经验,这通常是由于从不同的域(即:file:///)调用您的 PHP 脚本而导致的错误。如果您可以访问浏览器的控制台,您应该能够查看这是否实际上是导致数据不显示的错误。

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

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

      最后,如果上述选项不可行,您可以使用 JSON-P(尽管这不适用于 POST 请求),Simple jQuery, PHP and JSONP example? 有一个关于此的问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 1970-01-01
        • 2010-10-09
        • 2011-07-08
        • 1970-01-01
        相关资源
        最近更新 更多