【发布时间】:2015-08-11 05:03:34
【问题描述】:
newNet.php 运行并正确创建新条目。 netID 变量是一个自动增量,因此它是自动创建的。我的目标是检索它并在showActivities() 函数中使用它来显示刚刚创建的记录。例如,它应该像这样解决; showActivities(55);
问题是SQL总是返回netID、54而不是55的前一个值;如果我说echo $result + 1;然后,根据页面来源,它显示showActivities 函数中正在解析正确的数字,但该函数找不到并返回数据。但是看看已经成功插入的数据库。
所以一步一步来:
-
newNet.php运行,它将记录添加到 MySQL 数据库 - 获取刚刚在#1 中创建的
netID值 - 将它传递给
showActivities(),它会在页面上显示它。
我怎样才能在这里得到我想要的东西?似乎数据库没有足够快地更新以适应来自showActivities() 的请求,这可能吗?
function newNet(str) {
str = str;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
document.getElementById("status").innerHTML = xmlhttp.responseText;
}}
xmlhttp.open("POST", "newNet.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("q="+str);
showActivities(<?php $stmt=$db_found->prepare("select max(netID) as netID from netLog limit 1");
$stmt->execute();
$result=$stmt->fetchColumn();
echo $result;
?>);
}
【问题讨论】:
-
异步问题。您点了一份披萨,并想在它烤好之前吃掉它。
-
db 速度与它无关。打电话给比萨店订餐后,您甚至还没等挂断电话,就想吃比萨。
-
你正在混合 PHP 和 Javascript。 php 在服务器上执行 ONCE ,您将在页面的 JS 中“硬编码”该 max(newid) 值,直到页面重新加载。
-
这个比喻我明白了,现在我饿了.. 非常感谢。但我不知道如何解决它。我该怎么办?
标签: javascript php mysql ajax xmlhttprequest