У меня есть таблица данных, заполненная из базы данных MySQL через PHP. Первый столбец - это функция флага, поэтому при щелчке по значку булавки в любой конкретной строке база данных обновляется до «y» или «n» для этого поля. Затем я могу сортировать по этому столбцу, выводя все отмеченные строки в верхнюю часть таблицы. Поскольку мой стол довольно большой, я решил сделать это через Ajax. Однако он работает только для первого вызова, а затем становится неактивным. База данных не обновляется после первого запроса.Ajax call only update once
вот HTML/PHP.
<td align="center" id="pin_record">
<?php // Flag Column
if ($row['flag'] == 'n'){ ?>
<a class="flag_image" href="list_all_quotes.php?id=<?php echo $row['quotes_id'].'_y'; ?>">
<img src="../images/flag_off.gif" border="0" width="17" height="17" alt="Flag Off">
<?php } elseif ($row['flag'] == 'y'){ ?>
<a class="flag_image" href="list_all_quotes.php?id=<?php echo $row['quotes_id'].'_n'; ?>">
<img src="../images/flag_on.gif" border="0" width="17" height="17" alt="Flag On">
<?php } ?>
</a>
</td>
и вот JQuery
function ajax_init()
{
$('#pin_record a:first-child').on("click",(flag_record));
}
function flag_record()
{
var id_pin = this.href.replace(/.*=/,'');
var id_array = id_pin.split("_"); // split the quote id and pin
var id = id_array[0];
var pin = id_array[1];
this.id = 'flag_link_'+id;
$.getJSON('deletequote.php?ajax=true&id='+id+'&pin='+pin,set_flag);
return false;
}
function set_flag(data)
{
if(!data.success)return alert(data.serverMessage);
var href = '<a class="flag_image" href="list_all_quotes.php?id='+data.id+'_'+data.pin+'">';
$('#flag_link_'+data.id)
.replaceWith(href+data.flagimg);
}
$(document).ready(ajax_init);
Я совершенно новой для использования Ajax, так что любая помощь будет принята с благодарностью.
Большое спасибо, Kris
Привет, Спасибо за идею, которую я пробовал и тестировал, но это не сработало. Я все равно оставил его на месте. После первого вызова ajax дальнейший клик по той же ссылке выполняет полный запрос сервера и вообще обходит код ajax. –
Есть ли другое решение, которое я здесь отсутствует? –
Загрузите firefox + firebug и откройте панель NET. Вы можете видеть, что происходит с вашими запросами. Это может быть проблема с ответом на сервер. –