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

时间:2011-10-28 09:04:51

标签: php ajax

我一直在学习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>

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

4 个答案:

答案 0 :(得分:5)

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

对于一般的AJAX,即使我到目前为止还没有看到“退出(...)”方法,这两种方法都不正确。无论生成什么文档都可以。

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

答案 1 :(得分:1)

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

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

然后我可以像对象一样轻松地访问它们。

alert(response.name);

尝试使用jQuery等JS库。这很容易。

答案 2 :(得分:0)

我一直在做的是

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

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

答案 3 :(得分:-1)

如果您想让人们直接访问该页面,则上述代码可以正常工作。但是如果你想保护页面jut放在页面顶部if(_POST ['somevalue'] =='login')和$ ajax在POST中发送数据。如果你知道例如jQuery ajax onSuccess $(div).html(data)!!剩下的部​​分是相同的!