ajaxjqueryphp返回值

ajaxjqueryphp返回值,php,jquery,ajax,Php,Jquery,Ajax,我是AJAX新手,对PHP传递回jQuery的内容有些困惑。 因此,您有一个如下的AJAX函数: $.ajax({ url: '/my/site', data: {action: 'test'}, type: 'post', success: function(output) { alert(output); } }); success: function(data) {functionfooc

我是AJAX新手,对PHP传递回jQuery的内容有些困惑。 因此,您有一个如下的AJAX函数:

 $.ajax({ url: '/my/site',
     data: {action: 'test'},
     type: 'post',
     success: function(output) {
                  alert(output);
              }
 });
 success: function(data) {functionfoocommandshere}
$.ajax({ url: '/my/site',
    data: {action: 'test'},
    type: 'post',
    success: function(data) {
        var obj = jQuery.parseJSON(data);
        alert(obj.name[0] === "John");
      }
});
(我从ajax的另一个StackOverflow页面中获取了此信息。)

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

 $.ajax({ url: '/my/site',
     data: {action: 'test'},
     type: 'post',
     success: function(output) {
                  alert(output);
              }
 });
 success: function(data) {functionfoocommandshere}
$.ajax({ url: '/my/site',
    data: {action: 'test'},
    type: 'post',
    success: function(data) {
        var obj = jQuery.parseJSON(data);
        alert(obj.name[0] === "John");
      }
});
我只是对这个变量的命名方式感到困惑?如果PHP最终回显一个数组:

  echo $myVar;

如何从AJAX中获取这些信息?

可以从
success
块检索从PHP AJAX函数返回的数据。这是我的建议

在PHP文件中,使用将数组转换为更方便的格式,以便在Javascript中使用。所以你会有这样的想法:

echo json_encode($myArray);
然后,在JavaScript中,
success
方法的
data
变量将保存JSON。使用jQuery将其转换为JavaScript对象,这样就很容易操作了。我不知道数组包含什么,但您可以执行以下操作:

 $.ajax({ url: '/my/site',
     data: {action: 'test'},
     type: 'post',
     success: function(output) {
                  alert(output);
              }
 });
 success: function(data) {functionfoocommandshere}
$.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的常用且方便的方法。


<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;?>
$.ajax({ url:“/my/site”, 数据:{action:'test'}, 键入:“post”, 成功:功能(输出){ 警报(输出); } });
打印/回显的任何输出都将返回到success函数。当您想要用需要实时运行的内容填充html容器时,这非常方便


一旦掌握了这个窍门,另一个选项是使用JSON返回带有值的变量。

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

echo json_encode($myArray);
然后您可以通过Ajax以这种方式接收它

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

success
方法的
data
变量将保存PHP中的任何
echo
。不能直接传递数组;您必须首先将其转换为JSON。您对哪个变量的命名感到困惑?请参见下面包含返回php信息的变量。那就没关系了?.ajax命令将知道函数()参数中的任何内容都在返回php信息?此外:您可以
echo
php中的数组,您可以
print\u r
var\u dump
序列化它,但是
echo
用于字符串或整数等。所以这无关紧要?.ajax命令将知道函数()参数中的任何内容都在返回php信息?这不是“知道”的问题,这是.ajax描述的一部分:success函数接收返回的数据作为参数。-1您不能自动保证ajax调用会知道传递的JSON实际上是JSON…..而Jquery不是处理PHP,而是处理数据(请记住,PHP在输出到屏幕(JQuery可以访问数据)之前会进行解释)默认情况下,它会尝试其最佳猜测,这并不保证是JSON。这就是为什么最佳实践是定义数据类型(可以是JSON、text、jsonp、html等)然后作为成功函数中的返回。检索完整的html格式时,我只想返回值您真的需要
echo
该值吗?如果您不想显示
output
,该怎么办?@Gnietschow
echo
不会向用户显示任何内容,它只在响应中写入数据在ajax调用收到
输出后,是否向用户显示此响应取决于您自己。