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 响应?的主要内容,如果未能解决你的问题,请参考以下文章