8

我是 AJAX 的新手,对 PHP 传递回 jQuery 的内容有点困惑。所以你有一个这样的 AJAX 函数:

 $.ajax({ url: '/my/site',
     data: {action: 'test'},
     type: 'post',
     success: function(output) {
                  alert(output);
              }
 });

(我从另一个 StackOverflow 页面的 ajax 中获取了这个。)

但是在其他各种资源上,他们的成功部分将如下所示:

 success: function(data) {functionfoocommandshere}

我只是对什么决定了这个变量的命名感到困惑?如果 PHP 最终回显一个数组:

  echo $myVar;

我怎样才能从 AJAX 得到这个?

4

4 回答 4

15

Ajax-Requests 获取整个站点。因此,您不会在变量中获得任何数据,而是在数据参数中获得整个站点。您一起制作的所有回声都将在此参数中。如果要检索数组,则应先将其转换为json。

echo json_encode($myArray);

然后就可以通过这种方式通过Ajax接收了

$.ajax({ url: '/my/site',
 data: {action: 'test'},
 dataType: 'json',
 type: 'post',
 success: function(output) {
              alert(output);
          }
 });
于 2012-11-13T18:13:37.830 回答
7

在您的 PHP 文件中,使用json_encode将数组转换为更方便的格式,以便在 Javascript 中使用。所以你会有类似的东西:

echo json_encode($myArray);

然后,在您的 JavaScriptdata中,方法的变量success将保存 JSON。使用 jQuery 的parseJSON将其转换为 JavaScript 对象,这将非常容易操作。我不知道你的数组包含什么,但你可能会做这样的事情:

$.ajax({ url: '/my/site',
    data: {action: 'test'},
    type: 'post',
    success: function(data) {
        var obj = jQuery.parseJSON(data);
        alert(obj.name[0] === "John");
      }
});

同样,data这里的变量将包含您的 PHP 输出的任何内容,但 JSON 是一种将数据传输回 JavaScript 的常用且方便的方式。

于 2012-11-13T18:12:47.277 回答
3
<script type="text/javascript">
$.ajax({
    url: '/my/site',
    data: {action: 'test'},
    type: 'post',
    success: function(output) {
        alert(output);
    }
 });
</script>

<?php
$action = $_POST['action'];
echo $action;?>

任何打印/回显的输出都将返回到成功函数。当您想用需要实时运行的内容填充 html 容器时,这很方便。

一旦掌握了这一点,另一种选择是使用 JSON 来返回带有值的变量。

于 2012-11-13T18:12:48.490 回答
-1

从 PHP AJAX 函数返回的数据可以从success块中检索。这是手册

 $.ajax({ url: '/my/site',
 data: {action: 'test'},
 type: 'post',
 dataType: 'json',
 success: function(output) {
     //output is the data returned from PHP AJAX function in JSON format
     alert(output); 
   }
 });
于 2012-11-13T18:10:05.707 回答