Javascript 为什么AJAX函数不能立即从数据库中获取数据?

Javascript 为什么AJAX函数不能立即从数据库中获取数据?,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我有两个AJAX脚本: 第一个使HTML表格的第一个单元格可编辑,并将输入的值直接写入DB表格 第二个从DB表中获取数据,并将数据放在HTML表的第二个单元格中 顺序如下: 用户单击第一个HTML表的单元格,编辑它。AJAX脚本将其写入DB PHP脚本将此数据添加到某个变量中,并在DB中写入答案 AJAX脚本立即从第二个HTML表的单元格中的DB和shoes中获取数据 脚本如下所示: 1.Edit.js: 二,。Show.js: 三,。Table.php: //这是带有HTML表的PHP脚本的内

我有两个AJAX脚本:

第一个使HTML表格的第一个单元格可编辑,并将输入的值直接写入DB表格

第二个从DB表中获取数据,并将数据放在HTML表的第二个单元格中

顺序如下:

用户单击第一个HTML表的单元格,编辑它。AJAX脚本将其写入DB

PHP脚本将此数据添加到某个变量中,并在DB中写入答案

AJAX脚本立即从第二个HTML表的单元格中的DB和shoes中获取数据

脚本如下所示: 1.Edit.js:

二,。Show.js:

三,。Table.php: //这是带有HTML表的PHP脚本的内容部分

<td aria-label="First column" contenteditable="true" onBlur="saveToDatabase(this,'select1','<?php echo $show[$k]["id"]; ?>')" onClick="showEdit(this);"><?php echo $show[$k]["select1"]; ?></td>
      <td id="one"><?php echo $value['day1']; ?></td>
问题是我必须刷新页面才能看到我的HTML表2单元格更新。希望在编辑第一个单元格的数据后立即进行更新。
认为问题在show.php中,无法理解。需要帮助

我想我已经弄明白了

问题是,您请求在页面完全加载后查看更新。这在脚本'Show.js'$document.readyfunction中{

但是您希望在saveToDatabase函数完成后立即调用它

因此,您必须修改Show.js函数并创建如下内容

function showDoneEdits(obj){
}
然后在saveToDatabase函数的末尾,可以调用showDoneEdits函数。这将在更新过程完成后立即开始显示过程

请让其他人知道它是否有效:

function saveToDatabase(editableObj,column,id) {
    $(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat right");
  $.ajax({
    url: "days.php",
    type: "POST",
    data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id,
    success: function(data){
     $(editableObj).css("background","#FDFDFD");

      //$(editableObj).css("background","#FDFDFD");
     // $("#birthday-data").replaceWith(data); //The .replaceWith() method removes content from the DOM and inserts new content in its place with a single call

    $("#one").text(data);
    }        
   });
}

我相信您只是想让days.php的响应显示在表单元格中……好吧,这就是您的操作方式。'data'是days.php的预期返回值,因此days.php将在'column='+column+'&editval='+editableObj.innerHTML+'&id='+id发送到该页面后,回显您希望一个表单元格显示的任何内容……然后它将是just将其放入单元格。

请共享所有这些脚本所在的表格或页面的HTML。@HameesA.Khan,请参阅此处的代码:。有些php片段在其中,无法避免,因为它们显示了表格的填充逻辑。抱歉!我的话不清楚。我要的是您在浏览器中获得的HTML代码。我的意思是完全处理的代码。O还有一件事,在你共享的代码中,你在哪里调用Show.js?我是说它的函数?我想你必须在saveToDatabase函数结束后调用Show函数,或者更好。谢谢你的回答!尝试一下。现在当我编辑我的第一个单元格并单击外部时,会有一些反应,但不幸的是在第二个单元格中出现days.php页面的完整HTML代码…尝试解决它…您的days.php控制器应该与视图分开。days.php基本上应该是echo$response,其中$response是您想要在单元格中显示的内容。还可以在ajax设置中执行数据类型:text
function showDoneEdits(obj){
}
function saveToDatabase(editableObj,column,id) {
    $(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat right");
  $.ajax({
    url: "days.php",
    type: "POST",
    data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id,
    success: function(data){
     $(editableObj).css("background","#FDFDFD");

      //$(editableObj).css("background","#FDFDFD");
     // $("#birthday-data").replaceWith(data); //The .replaceWith() method removes content from the DOM and inserts new content in its place with a single call

    $("#one").text(data);
    }        
   });
}