#jquery #ajax #function
#jquery #ajax #функция
Вопрос:
Почему функция с fadeOut никогда не достигается? Каждый раз, когда функция запускается, она обновляет страницу вместо использования AJAX.
<script type="text/javascript">
function deleterow(id){
if (confirm('Are you sure want to delete?')) {
$.post('delete.php', {id: id, ajax: 'true' },
function(){
$("#row_" id).fadeOut("slow");
});
}
}
</script>
Вот вывод html с помощью php:
<button onclick="deleterow('.$entry['rowid'].')" class="fg-button fg-button-icon-left ui-state-default ui-corner-all"><span class="ui-icon ui-icon-trash"></span></button>
Комментарии:
1. Проверьте свою консоль javascript на наличие ошибок.
2.
id: id
похоже на ошибку.3. Имеет ли это какое-либо отношение к тому факту, что ваши кавычки вложены на три глубины? т.Е. » ‘ ‘часть, которая не регистрируется’ ‘ » Может быть, попробовать экранировать эти кавычки?
4. Именно так вы бы создали html в php, поэтому я так не думаю
Ответ №1:
Трудно сказать наверняка, не видя кода / html, который вызывает функцию, но я предполагаю, что это каким-то образом привязано к onclick
обработчику. Поэтому, если вы не предотвратите действие по умолчанию (следующее за href
тегом a
), оно обновит страницу. Вам нужно вернуть false из функции-обработчика или вызвать event.preventDefault()
из нее.
Я бы использовал эту разметку вместо:
<button
value="$entry['rowid']"
class="fg-delete fg-button fg-button-icon-left ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-trash"></span>
</button>
Кодируя rowid в dom (в данном случае как value
), мы можем получить к нему доступ в наших функциях без необходимости жестко кодировать его в вызове функции и сохранять обработчик незаметным.
// pulling this into a full definition for clarity
// you could of course just use an anon function inside you $.click call
function handleDelete(event){
event.preventDefault();
var $this = $(this);
var rowId = $this.val();
deleterow(rowId);
return false;
}
$('button.fg-delete').click(handleDelete);
Демонстрация:http://jsfiddle.net/eBa7v/1 /
Комментарии:
1. Да, это правильно, я использую кнопку onclick. Я думал о выполнении функции preventDefault(). Должен ли я передавать событие через параметры функции?
2. Да, обработчики событий получают объект event в качестве своего единственного аргумента, однако вы можете указать хэш произвольных данных, которые будут передаваться внутри этого объекта event … опубликуйте свою оценку, и я могу привести несколько примеров.
3. @jcane86: Смотрите обновления о том, как я бы это сделал. Также обратите внимание на комментарий Madmartigan к вашему вопросу… похоже, у вас ошибка с
id
значением post, которое вы отправляете.4. Комментарий @TrevorMA prodigitalson здесь, я полагаю, предназначался для вас.
5. Варианты.. да, это было… Мне нужно выйти из многозадачности 🙂