我有一个PHP脚本,可以从数据库中检索名称(字符串)。我想使用$ .ajax()将此数组传递给Javascript。 我无法理解我应该如何在PHP中编码数组,然后在Javascript中解码它。 有人可以为此提供示例代码吗? 非常感谢!!
答案 0 :(得分:4)
<?php // test.php
$myArray = array(1, 2, 3);
echo json_encode($myArray);
?>
HTML文件:
$(function() {
$.getJSON('http://localhost/test.php', function(data) {
$(data).each(function(key, value) {
// Will alert 1, 2 and 3
alert(value);
});
});
});
答案 1 :(得分:2)
你可以使用json_encode
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
完整示例,您可以阅读:
http://www.prodevtips.com/2008/08/15/jquery-json-with-php-json_encode-and-json_decode/
或
http://www.prodevtips.com/2009/12/09/multiple-select-lists-with-jquery-and-json/
答案 2 :(得分:1)
<?php
echo json_encode(array('key' => 'value', 'cool' => 'ice'));
?>
json是一个javascript对象。所以没有必要“解码”它。但是,看起来你正在使用jquery。有一个很棒的函数可以检索json数据:
jQuery.getJSON(url, senddata, function(returndata){alert(returndata.cool);})
或
jQuery.getJSON(url, senddata, function(returndata){mybigfunction(returndata);})
mybigfunction(data)
{
myvar = data.cool;
alert(myvar);
}
http://api.jquery.com/jQuery.getJSON/
或者您也可以使用$ .ajax,如您所述:
jQuery.ajax({
url: url,
dataType: 'json',
data: senddata,
success: function(data){mybigfunction(data)}
});
mybigfunction(data)
{
myvar = data.cool;
alert(myvar);
}
http://api.jquery.com/jQuery.ajax/
“回调”是一个被调用的函数,它传递了从url返回的json数据。
你会'冰'宝贝......呃......抱歉玉米。
getJSON方法相当简短且方便。请查看链接以获取更多详细信息。
答案 3 :(得分:0)
要做到这一点,你只需要将一个脚本回显到包含你的数据的PHP页面,然后你可以从页面上的任何其他Javascript访问它,包括jQuery和.ajax()。
同样,如果您只想通过AJAX调用传递它,只需使用json_encode():
<?php
echo json_encode(
array(
'groupidlist'=>$groupids,
'groupnamelist'=>$groupnames,
'serverurl'=>$serverurl,
'uid'=>$curuser->getID()
)
);
?>
然后使用.ajax()
或更好的.getJSON()
的回调函数处理它,该{@ 3}}仅为此用途而构建。
我保证我不会在这里发布我的博客,但是我在passing variables between Javascript and PHP写了一篇帖子,因为我经常这么做,我想出了一个简单/可靠/干净且可重复使用的方法。如果您经常将数据从PHP传递到Javascript并且不需要AJAX,我会在这里粘贴基本要素:
在每个外部js文件的顶部,我添加了关于哪些PHP变量是必需的注释,所以我可以跟踪我在包含它时需要什么(这是可选的,当然,但很好):
/* This script depends on the following variables in phpvars:
groupidlist
groupnamelist
serverurl
uid
*/
然后,在PHP文件中,我使用一行Javascript传递所需的变量,为JSON数组分配所有需要的值。 PHP中的示例,直接来自我的代码:
<script type="text/javascript">
var phpvars = <?php
echo json_encode(
array(
'groupidlist'=>$groupids,
'groupnamelist'=>$groupnames,
'serverurl'=>$serverurl,
'uid'=>$curuser->getID()
)
);
?>;
</script>
一旦设置完毕,我就可以通过phpvars
数组简单地访问Javascript中我需要的任何PHP变量。例如,如果我需要使用我的serverurl设置图像源,我可以这样做:
imgElement.src = phpvars.serverurl + '/images/example.png';
因为它使用JSON,所以不必担心通过尝试插入PHP变量来确保不会在Javascript中搞砸任何东西。变量的编码/解码由内置的JSON函数在两端处理,因此很难打破它,并且无法传递变量 - 你像传统的其他PHP数组一样传递它们。在导致这种情况的摆弄中,我遇到了这两个问题,这个解决方案可以很好地处理它们。
答案 4 :(得分:0)
这是Php文件代码
<?php
$array = array(1, 2, 3);
echo json_encode($array);
?>
然后,您可以像这样$array
解析$.ajax()
success: function (data) {
var x = JSON.parse(data);
console.log(x);
}