过去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脚本之前,值会进入函数,提醒它们。
答案 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 ,无论浏览器缓存设置或服务器端缓存建议如何。