PHP 脚本如何向 Dojo 的 xhrGet 发送 JSON Ajax 响应?

Posted

技术标签:

【中文标题】PHP 脚本如何向 Dojo 的 xhrGet 发送 JSON Ajax 响应?【英文标题】:How does a PHP script send an JSON Ajax response to Dojo's xhrGet? 【发布时间】:2011-09-26 22:52:47 【问题描述】:

我刚开始使用 dojo,我正在通过 xhrGet 在 dojo 中使用 Ajax。

我知道您在 php 中“回显”的内容是作为 Ajax 结果返回的内容,但是这如何与 JSON 一起使用?

PHP 脚本是否回显随后从 xhrGet 调用的函数直接访问的 javascript 代码?

我正在尝试让 PHP 脚本从数据库中检索数据,填充三个数组,并在我的 javascript 代码中使用它们,所有这些都使用 xhrGet。

谢谢!

【问题讨论】:

【参考方案1】:

在回显之前用 PHP 设置标题:

<?php
    header('Content-type: application/json');
    echo '"myJsonKey":"myJsonVal"';

对于您的具体情况,您可以这样做:

<?php
    $my_records_array = fetch_records($some_criteria);
    $my_records_json  = json_encode($my_records_array);

    header('Content-type: application/json'); 
    echo $my_records_json;

【讨论】:

啊,我明白了。因此,如果我有三个语句都使用 json_encode 对三个不同的数组进行编码,我将能够使用 response.whateverArray 通过 xhrGet 中的加载调用访问这些语句?另外,如果我使用 xhrGet 的“内容”传递一些东西,我是使用 $_GET 数组还是 $_REQUEST 数组?我见过两个都用过。谢谢! 是的,并且始终使用$_GET$_REQUEST,因为$_REQUEST$_GET$_POST 等的组合。【参考方案2】:

大多数 JavaScript 库都围绕 AJAX 请求包装回调。我不确定 Dojo,但是 jQuery 在发送 URL 时会在 URL 中添加一个回调参数。

然后,当服务器响应时,它会触发回调,该回调调用 your 回调来处理结果。

至于实际的服务器端内容,服务器通常只打印 JSON 编码的字符串并传递一个额外的标头,让浏览器知道它是什么类型的内容。

<?php
$rows = $db->fetch($sql);

header('Content-type: application/json');
print json_encode($rows);
?>

【讨论】:

以上是关于PHP 脚本如何向 Dojo 的 xhrGet 发送 JSON Ajax 响应?的主要内容,如果未能解决你的问题,请参考以下文章

Dojo xhrget 响应

从 ajax 调用加载 Dojo 表单

如何连续运行 PHP 脚本?

JS如何清除IE浏览器缓存

如何在我的网页中移动 dojo 脚本?

如何在我的网页中移动dojo脚本?