2013-08-26 2 views
0

У меня есть таблица результатов, которая позволяет пользователям удалять библиотечные книги из их списка выбранных книг на этапе проверки. Я реализовал простой метод AJAX, так что, когда пользователь нажимает кнопку «Удалить» рядом с книгой в списке, она удаляет ее со страницы без перезагрузки страницы - все это хорошо работает.AJAX Script - теперь нужно обновить более одного

Теперь мне также нужно обновить еще один элемент на странице, который обрабатывает разбивку на страницы, показывающую, сколько выбранных книг у них есть. В верхней части списка есть это резюме пагинации:

<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.

+2

Я восхищаюсь вашим пуристским подходом, но использование библиотеки, такой как jQuery, скроет большую часть этого кода и позволит сосредоточиться на фактическом приложении (а не на его механизме). – Nick

+0

Посмотрите на мой ответ по адресу http://stackoverflow.com/questions/15713646/how-to-structure-javascript-when-including-another-php-file/15713778#15713778, который поместит вас на правильный путь. – plalx

+0

В основном вы хотите запускать события, чтобы сообщить частям вашего приложения, что что-то интересное и эти прикладные модули/части/разделы будут слушать и реагировать. В вашем случае, когда записи удаляются, у вас может быть событие 'recorddelete', которое будет запущено. Затем ваша секция разбивки на страницы будет прослушивать событие и соответствующим образом обновлять DOM. – plalx

ответ

-1

+1 к Нику. Используйте jQuery для этого, это сделает вашу жизнь waaaaaay проще.

<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> 
+0

Число оставшихся записей должно быть переменной, пользователь может ударить несколько раз. –

+0

Изменено так, чтобы принимать эти параметры – robrich

Смежные вопросы