繁体   English   中英

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

[英]How to pass an array of strings from PHP to Javascript using $.ajax()?

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

<?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);
        });
    });
});

你可以使用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/

<?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 方法相当简短且方便。 查看链接了解更多详情。

为此,您只需将一个脚本回显到包含您的数据的 PHP 页面中,然后您就可以从页面上的任何其他 Javascript 访问该页面,包括 jQuery 和 .ajax()。

同样,如果您只想通过 AJAX 调用传递它,只需使用 json_encode():

<?php
echo json_encode(
 array(
  'groupidlist'=>$groupids,
  'groupnamelist'=>$groupnames,
  'serverurl'=>$serverurl,
  'uid'=>$curuser->getID()
 )
);
?>

然后使用.ajax()的回调函数处理它,或者更好的是.getJSON() ,它专为这种用途而构建。

我保证我不仅在这里发垃圾邮件,而且我写了一篇关于在 Javascript 和 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 数组一样传递它们。 在导致此问题的摆弄中,我在这两个方面都遇到了问题,而此解决方案很好地解决了这些问题。

这是 PHP 文件代码

<?php
$array = array(1, 2, 3);
echo json_encode($array);
?>

然后你可以像这样在你的$.ajax()解析$array

success: function (data) {
            var x = JSON.parse(data);
            console.log(x);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM