有时函数reload();不会更新div的内容。我点击一个按钮时调用这个函数。有时只有一个div不会更新。随机div,随机点击。有时第一次点击不起作用。 div内容不会显示任何错误,只是以前未更新的数字。当我再次点击按钮时,它会更新并显示正确的一个。为什么AJAX返回错误的结果?
错误的实施例(由一个每次增加#number_input我点击): DIV内容示出了:1,2,2,4 问题是与那些2S,缺少。在数据库中,数字是正确的。
我正在运行本地服务器(XAMPP)。 火狐,Chrome和IE同样的问题。
没有错误萤火虫控制台。请求正确完成,但返回值有时错误。通常只有一个数组项是错误的,从数据库返回的。
完全相同的ajax代码与不同的参数(完整)在不同的按钮上工作正常。
PS:改变了我的变种名称为较短所以他们的眼睛友好
按钮HTML:
<button id="xButton" class="btn btn-info">Text</button>
按钮JS:
document.getElementById('xButton').onclick = function() {
var val = $('#number_input').val();
if (val > 0)
{
var xx = 1;
var yy = 1;
properties(xx, yy, val); //this updates the database by current val + val. Works correctly. Values always updated, no errors there. Clean and simple code. No way this is the source of problem.
number_input.value = 0;
xButton.textContent = ("bla bla"); //just resets the text
p1_reload();
}
}
的jQuery:
function reload() {
$.ajax({
type: 'POST',
url: 'example.php',
cache: false,
data: {reload: "action"},
dataType:"json",
success: function(data) {
var xres = new Array();
xres = data;
document.getElementById("x1").textContent = xres[0];
document.getElementById("x2").textContent = xres[1];
document.getElementById("x3").textContent = xres[2];
document.getElementById("x4").textContent = xres[3];
//these two functions has not connection with the updated divs. They don't update or even read them. So, there shouldn't be any problems.
xFunction();
yFunction();
}
});
}
PHP:
if(isset($_POST['reload'])) {
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
try
{
require_once("session.php");
$auth_user = new xClass();
$user_id = $_SESSION['user_session'];
$stmt = $auth_user->runQuery("SELECT * FROM blabla WHERE user_id=:user_id LIMIT 1");
$stmt->execute(array(":user_id"=>$user_id));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
$xxx = $userRow['xxx'];
$yyy = $userRow['yyy'];
$zzz = $userRow['zzz'];
$qqq = ($xxx * $yyy) + ($zzz + $yyy + $xxx);
$xres = array();
$xres[0] = $xxx;
$xres[1] = $yyy;
$xres[2] = $zzz;
$xres[3] = $qqq;
$result = json_encode($xres);
echo $result;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
数据库返回简单整数。没有触发器或小数。
jQuery版本:1.12.4分钟。
单击每隔几秒(不频繁点击)。请求和响应在10-38毫秒内完成。
你是否在没有延迟的情况下在同一个触发器上执行ajax请求?因为可能会发生什么,因为你正在使用单独的ajax调用,因为你的数据库在你从第二个Ajax获得结果之前还没有真正完成更新。所以第二个Ajax可能会在第一个实际完成php脚本之前回来。 – NoobishPro
这是我想到的第一件事。延迟有时只有几秒钟。没有办法数据库不会在几秒钟内更新。再加上请求是在本地进行的,所以没有dealy(大约10-38 ms,直到返回值)。我不认为这是问题。 – user1947700
帮你一个忙,还在测试它。做第二个按钮只是为了重新加载。如果问题仍然存在,那么你可以肯定... – Jeff