PHP脚本在通过AJAX调用时不回显数据

时间:2014-06-14 12:27:04

标签: php ajax

过去2个小时我一直在盯着这个问题而且似乎无法理解它,即使在验证控制台上的所有东西都是正确加载后也是如此。

我的页面上基本上有两个滑块,最终会在表格中填充结果,每次更改滑块时我都会向我的AJAX脚本发送两个值的数组:

function update_results(values) 
{
   $.ajax({
       type: "GET",
       url:  "./app/core/commands/update_results.php",
       data: { query : values },
       cache: false,
       success: function(data) {
                   // eventually some success callback
       }
   });
}

浏览器成功找到update_results.php但它没有在页面上执行逻辑(我假设它找到了页面,因为我的控制台中没有出现404错误。)

此时脚本非常简陋,因为我显然试图在两个文件之间建立通信:

<?php
$vals = $_GET['values'];
echo $vals;

在这种情况下,$vals永远不会回显到页面,我在AJAX中遗漏了什么?我知道在附加PHP脚本之前,值会进入函数,提醒它们。

2 个答案:

答案 0 :(得分:2)

当Ajax完成时,会触发success回调,并且您的PHP脚本输出会保存在data中。

您可以像这样处理数据:

   $.ajax({
       type: "GET",
       url:  "./app/core/commands/update_results.php",
       data: { query : values },
       cache: false,
       dataType: "text",
       success: function(data) {
             document.write( data )
       }
   });

PHP,在服务器上运行,不知道前端浏览器发生了什么,它只是像任何其他普通的http请求一样响应ajax请求。因此SQL查询的失败与javascript无关,javascript只负责发送ajax请求以及接收和处理响应。我猜你的php脚本中有一些错误。

答案 1 :(得分:2)

Ajax Calls正遭受浏览器缓存的困扰。如果您的浏览器认为,他已经知道 update.php 的内容,他将返回缓存的内容,而不是触发脚本。因此你的 修改后的代码可能根本无法执行。 (因此,您的插入查询未执行)

为了确保在您的情况下不会发生这种情况,总是将参数(时间戳)传递给脚本是个好主意,因此您的浏览器认为这是另一个结果:< / p>

function update_results(values) 
{
   $.ajax({
       type: "GET",
       url:  "./app/core/commands/update_results.php?random_parameter=" + (new Date().getTime());
       data: { query : values },
       cache: false,
       success: function(data) {
                   // eventually some success callback
       }
   });
}

这将确保 - 至少 - 浏览器缓存每秒刷新 update_results.php ,无论浏览器缓存设置或服务器端缓存建议如何。