如何使用PHP从AJAX请求返回信息?

如何使用PHP从AJAX请求返回信息?,php,ajax,Php,Ajax,我一直在学习AJAX,并从本地服务器发出第一个请求,只请求一个XML或HTML文件,没有什么太难的。我现在正在使用PHP,并且我非常了解它,它与使用XML/HTML没有太大区别 在阅读教程时,我看到了几种将信息返回到JavaScript的不同方法;我很好奇是否有一种“正确”的方法,甚至是一种“更正确”的方法。到目前为止,我遇到了三种方法: someFile.php: <?php $foo = $_GET['bar']; // manipulate $foo exit($foo); //

我一直在学习AJAX,并从本地服务器发出第一个请求,只请求一个XML或HTML文件,没有什么太难的。我现在正在使用PHP,并且我非常了解它,它与使用XML/HTML没有太大区别

在阅读教程时,我看到了几种将信息返回到JavaScript的不同方法;我很好奇是否有一种“正确”的方法,甚至是一种“更正确”的方法。到目前为止,我遇到了三种方法:

someFile.php:

<?php
$foo = $_GET['bar'];

// manipulate $foo

exit($foo); // method 1
echo $foo;  // method 2

// method 3:
?>

<div id='baz'>
    <p>
        Some output to be returned to JavaScript as the 'responseText'
        property of the AJAX request.
    </p>
    <p>
        <?php echo $foo ?>
    </p>
</div>


要作为“responseText”返回到JavaScript的一些输出
属性。

我只是不确定从服务器返回信息到浏览器的过程。什么东西都被送回了?如果这是一个人们应该访问的页面,会显示什么?谢谢你的帮助

我一直做的是

<?php
header('Content-type: text/plain; charset=utf-8');
echo $foo;
exit;
?>

(是的,我知道在这个例子中我不需要使用退出)

我通常做的是

<?php
header('Content-type: text/plain; charset=utf-8');
echo $foo;
exit;
?>


(是的,我知道在本例中我不需要使用
exit

您需要将PHP脚本视为生成浏览器请求的HTML/JSON/XML文档的程序。在AJAX中,浏览器的作用与此相同:它请求文档中的某个URL。只是它可能只是一个片段或JSON,您将使用JavaScript将其集成到页面中

一般来说,对于AJAX来说,这两种方法都不正确,尽管到目前为止我还没有看到“退出(…)”方法。生成文档的任何内容都将起作用


关于最佳实践,您可能最终希望将计算与文档的生成分开。但是我想你应该首先在基本的PHP、HTML、AJAX等方面获得更多的经验。当你编写的应用程序变得如此庞大,以至于你开始难以找到自己的代码时,你可能想看看用于PHP的MVC框架,它解决了分离计算(业务/模型逻辑)的问题和文档生成(视图)。我听说Symfony很受欢迎

您需要将PHP脚本视为生成浏览器请求的HTML/JSON/XML文档的程序。在AJAX中,浏览器的作用与此相同:它请求文档中的某个URL。只是它可能只是一个片段或JSON,您将使用JavaScript将其集成到页面中

一般来说,对于AJAX来说,这两种方法都不正确,尽管到目前为止我还没有看到“退出(…)”方法。生成文档的任何内容都将起作用


关于最佳实践,您可能最终希望将计算与文档的生成分开。但是我想你应该首先在基本的PHP、HTML、AJAX等方面获得更多的经验。当你编写的应用程序变得如此庞大,以至于你开始难以找到自己的代码时,你可能想看看用于PHP的MVC框架,它解决了分离计算(业务/模型逻辑)的问题和文档生成(视图)。我听说Symfony很受欢迎

如果您希望允许用户直接访问该页面,则上述代码可以正常工作。但是,如果您想保护页面,请将其放在页面顶部,如果(_POST['somevalue']=='login')和$ajax在POST中发送数据。如果您知道jQuery ajax onSuccess$(div).html(data)中的示例,则其余部分是相同的

如果您希望允许用户直接访问该页面,则上述代码可以正常工作。但是,如果您想保护页面,请将其放在页面顶部,如果(_POST['somevalue']=='login')和$ajax在POST中发送数据。如果您知道jQuery ajax onSuccess$(div).html(data)中的示例,则其余部分是相同的

我通常有多个值要从服务器发回,因此我使用:

<?php echo json_encode(array('name' => 'Michael', 'email' => 'michael@example.com'); ?>

尝试使用JS库,如jQuery。这使它变得非常简单。

我通常有多个值要从服务器发回,因此我使用:

<?php echo json_encode(array('name' => 'Michael', 'email' => 'michael@example.com'); ?>

尝试使用JS库,如jQuery。这样做很简单。

出于好奇,你为什么要加出口?只有我一个人。我肯定不会有空白的回应。好的。这只是我,但我讨厌看到代码中“什么都不做”的东西,因为我花时间试图理解它为什么会在这里。。。总的来说,当我把它放在那里的时候;)出于好奇,你为什么要加出口?只有我。我肯定不会有空白的回应。好的。这只是我,但我讨厌看到代码中“什么都不做”的东西,因为我花时间试图理解它为什么会在这里。。。总的来说,当我把它放在那里的时候;)因此,可以肯定的是,从PHP返回的页面将作为AJAX请求的responseText接收,对吗?谢谢你的解释,这真的让我很生气我想“responseText”是您将AJAX响应写入的变量?那样的话,是的。在jQuery中,这将是传递给“success”回调函数的“data”参数?谢谢你的解释,这真的让我很生气我想“responseText”是您将AJAX响应写入的变量?那样的话,是的。在jQuery中,这将是传递给“success”回调函数的“data”参数。