从 Javascript 获取 JSON 数据

Posted

技术标签:

【中文标题】从 Javascript 获取 JSON 数据【英文标题】:Getting JSON data from Javascript 【发布时间】:2011-12-27 09:54:16 【问题描述】:

我目前正在开发一个 php/javascript 项目,该项目从数据库中检索信息并 json 对数据进行编码。它应该在网页的组合框中显示数据库中的值。

在对 mysql 数据进行编码的 PHP 脚本中,我有以下代码:

$query = "SELECT pla_platformName as `platform` FROM platforms";

    $result = mysql_query($query);

    if ($result)
           
        while ($myrow = mysql_fetch_array($result))
        
            $output[] = $myrow;                     
        

        print json_encode($output);
        die();
    

在 javascript 代码中,我有以下内容:

<script>
        $(document).ready(function()
        
            getPlatforms();
            function getPlatforms()
            
                $.post("phpHandler/get-platforms.php", function(json)
                    
                        alert(json);    
                        alert(json.platform);
                    
                );
            
        );
    </script>

我有警报(json);它显示了整个 json 数据,如下所示:

["0":"hello","platform":"hello","0":"android","platform":"world"]

下一个警报(json.platform) 我希望它显示 hello 或 world 或两者都显示,但在这一行它一直说未定义。为什么这不起作用以及如何获得特定平台,即你好或世界。

感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:

您需要先将JSON 字符串转换为对象

var data = $.parseJSON(json);

在这种情况下,返回的对象是一个数组。试试

alert(data[0].platform);

如果您在 ajax 调用中将dataType 选项设置为json,则可以跳过第一步。

$.post("phpHandler/get-platforms.php", function(data) 
     alert(data[0].platform);
  , 
  'json'
 );

见jQuery.post() documentation

【讨论】:

【参考方案2】:

您的平台成员是在每个项目上定义的,您必须指定您希望平台用于哪个数组项目。这应该可以解决问题:

alert(json[0].platform);

我假设您的 json 参数实际上包含一个 javascript 对象,而不仅仅是一个字符串。如果它是一个字符串,你应该在你的 php 页面上定义 contentType 'application/json'。 (我不确定你是如何在 php 中做到这一点的,因为我自己为服务器端做 .NET。)

但是,为了快速测试它,您可以执行 $.parseJSON(json) 来获取对象。

【讨论】:

哦.. 别人在我打字的时候发帖了.. :) 希望它能带你去你要去的地方。 :)

以上是关于从 Javascript 获取 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Javascript 获取 JSON 数据

用javascript从json中获取数据不止一个数据

javascript 从JSON文件获取数据

使用 javascript 从 JSON 获取特定值

如何通过使用 JavaScript 的 HTTP 请求从 IBM Cloud 获取 JSON 格式的数据?

我想将 JSON 数据传递给与 web 视图相关的 javascript 函数。但我无法从 Javascript 函数中获取响应数据