Я надеюсь, что мне не хватает чего-то простого здесь. У меня есть веб-сайт CakePHP, с которым я использую jQuery mobile. Я думаю, что CakePHP может иметь к этому какое-то отношение, но я не уверен.
В любом случае, у меня есть форма, которую я создал на странице просмотра для добавления комментариев. Вызов Ajax работает должным образом на первой загружаемой странице, но переход на любую другую страницу предотвращает отправку данных. Консоль по-прежнему регистрирует «данные» каждый раз, когда я нажимаю кнопку (после использования «pagebeforeshow», как рекомендовано где-то еще), однако, похоже, это данные с исходной загруженной страницы (я знаю это, потому что в настоящее время я отлаживаю $ this-> запрос-> данные на странице действий формы).
Ясно, что мне нужно как-то «сбросить» форму при перемещении по страницам, но я не уверен, возможно ли это без обновления страницы. Я знаю о «data-ajax» = «false» и «rel» = «external», которые можно использовать в качестве крайней меры, но я хочу избежать обновления страницы, если смогу.
Какие-либо предложения? Спасибо.
Вот JS, который я использую для вызова Ajax
//<![CDATA[
$(document).on('pagebeforeshow', function(){
$(document).off('click', '#comment_add').on('click', '#comment_add',function(e) {
$.ajax({
async:true,
data:$("#sCommentViewForm").serialize(),
dataType:"html",
success:function (data, textStatus) {
//$('#comments').remove();
//$('<div id="comments"></div>').appendTo('#comments_container');
$("#comments").html(data).trigger('create');
//$('#comments_box').remove();
//$('<div id="comments_box"></div>').appendTo('#comments_container');
console.log(data);
},
type:"POST",
url:"commentsUsers/comment_add/<? echo $template['Template']['id']; ?>"});
return false;
});
});
//]]>
</script>
Это был мой основной недостаток понимания. После долгих поисков этот простой пост оказался наиболее полезным:
Jquery Mobile Javascript не работает при загрузке AJAX
По сути, я использовал идентификаторы для всего — когда я переключился на имена классов, это было гладко.
Других решений пока нет …