如何使用$ .ajax()将字符串数组从PHP传递到Javascript?

时间:2010-08-17 06:14:53

标签: php javascript jquery ajax

我有一个PHP脚本,可以从数据库中检索名称(字符串)。我想使用$ .ajax()将此数组传递给Javascript。 我无法理解我应该如何在PHP中编码数组,然后在Javascript中解码它。 有人可以为此提供示例代码吗? 非常感谢!!

5 个答案:

答案 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);
        }