【问题标题】:AJAX Script - Now need to update more than oneAJAX 脚本 - 现在需要更新多个
【发布时间】:2013-08-26 03:34:11
【问题描述】:

我有一个结果表,允许用户在结帐阶段从他们选择的书籍列表中删除图书馆书籍。我已经实现了一种简单的 AJAX 技术,因此当用户单击列表中一本书旁边的删除按钮时,它会从页面中删除它而无需重新加载页面 - 这一切都很好。

我现在还需要更新页面上的另一个元素,该元素处理分页,显示他们有多少选定的书籍。在列表的顶部有这个分页摘要:

<div class="recordlist_nav">Displaying records 1 - 10 of 10 records selected</div>

除了从列表中删除这本书之外,我还需要更新它,例如,如果他们删除了一本书,它应该更改为:

<div class="recordlist_nav">Displaying records 1 - 9 of 9 records selected</div>

我可以生成更新的字符串,但不确定如何让我的 AJAX 脚本同时更新多个元素。这是我的脚本:

<script type="text/javascript">
function deleteRecord(recid,articleID) {
   // Allocate an XMLHttpRequest object
   if (window.XMLHttpRequest) {
      // IE7+, Firefox, Chrome, Opera, Safari
      var xmlhttp=new XMLHttpRequest();
   } else {
      // IE6, IE5
      var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   // Set up the readyState change event handler
   xmlhttp.onreadystatechange = function() {
      if ((this.readyState == 4) && (this.status == 200)) {
         document.getElementById("selectedRecord" + recid).innerHTML=xmlhttp.responseText;
      }
   }
   // Open an asynchronous POST connection and send request
   xmlhttp.open("POST", "delete_record.php", true);
   xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   xmlhttp.send("recid="+recid+"&articleID="+articleID);
   return false;  // Do not follow hyperlink
}
</script>

目前delete_record.php在删除选中记录时只是简单地回显一个空字符串:

$result = '';
echo $result ;

我将更新的分页标头存储在 $navigation 变量中。我现在需要将它传递回脚本,并让该脚本将 的内容替换为 $navigation 变量的内容。

【问题讨论】:

  • 我很欣赏你的纯粹方法,但是使用像 jQuery 这样的库会隐藏大部分代码,让你专注于实际的应用程序(而不是它的机制)。
  • 看看我在stackoverflow.com/questions/15713646/… 的回答,它会让你走上正确的道路。
  • 基本上,您希望触发事件以通知应用程序的某些部分发生了感兴趣的事情,并且这些应用程序模块/部分/部分将听取这些并做出反应。在您的情况下,当记录被删除时,您可能会触发 recordsdelete 事件。然后你的分页部分会监听事件并相应地更新 DOM。
  • 改进这个令人困惑的问题。你也需要 php 方面的帮助吗?

标签: php javascript ajax


【解决方案1】:

+1 给尼克。使用 jQuery,它会让你的生活变得更简单。

<script><!-- type="text/javascript" not needed -->
function deleteRecord(recid,articleID,thisPage,allPages) {
    $.ajax({
        url: 'delete_record.php',
        type: 'POST',
        data: JSON.stringify({recid:recid,articleID:articleID}),
        success: function () {
            // It worked
            $(".recordlist_nav").text("Displaying records 1 - "+thisPage+" of "+allPages+" records selected");
        }
    });
    return false;
}
</script>

【讨论】:

  • 剩余记录数需要一个变量,用户可以多次点击删除。
  • 修改后也可以作为函数参数传入
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 2015-08-15
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多