从 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 的 HTTP 请求从 IBM Cloud 获取 JSON 格式的数据?
我想将 JSON 数据传递给与 web 视图相关的 javascript 函数。但我无法从 Javascript 函数中获取响应数据