window.history.pushState(null, null, url); //с какой целью не понятно
Это смена адреса поле адреса браузера.. |
Это смена адреса поле адреса браузера..
Зачем это при отправке формы методом POST и асинхронным способом? |
Та функция которую вы изменили отвечает за подгрузку контента из меню по url-ам.
А это window.history.pushState(null, null, url); записывает в память браузера урлы страниц чтоб можно было туда обратно гулять по страницам.. у меня статичная только одна страница ...шаблон с меню...остальное все подгружается динамически... Самое прикольно что гет отрабатывает отлично а вот пост никак немогу освоить...Может есть другие варианты отправки форм из подгруженного контента? |
Вот мой весь код
$(document).ready(function() { [COLOR="red"]//здесь отслеживаею кнопки меню и отправляю методом гет url[/COLOR] $('.mod1').click(function() { var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); if(url != window.location){ window.history.pushState(null, null, url); } return false; }); [COLOR="red"]//здесь то что обсуждаем[/COLOR] $('#content').on('submit','#crform',function(){ $.ajax({ type: 'POST', url: this.action, dataType: "html", data: $(this).serialize(), success: function(data){ $('#content').html(data); } }); return false; }); [COLOR="red"]//здесь отслеживаем кнопки из подгр. Контента и отпр. Гетом[/COLOR] $('#content').on('click','.mod2',function(){ var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); if(url != window.location){ window.history.pushState(null, null, url); } return false; }); [COLOR="red"]//это отдельная история нестоит внимания...[/COLOR] $('#content').on('click','.rem1',function(){ var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); return false; }); $(window).bind('popstate', function() { $.ajax({ url: '?ajax=' + location.search, success: function(data) { $('#content').html(data); } }); }); }); |
Понятно, то есть однострочник, а форма вызывается в каком-то разделе ее.
Вариант второй, который я показал, в любом случае будет работать, так как форме "навешивается" обработчик сразу при ее добавлении на страницу. То есть отправка будет гарантировано, это можно в отладчике проследить. А если не получается с ответом, то может быть только одна причина - сервер: а) неверный url запроса, б) неверный сценарий приема формы, и) и т.д... |
Попробую и отпишусь..
|
Пробуйте, только здесь:
$('#content').html(data) .find('form')//заменить на .find('#postform') ведь однострочник, и если '#content' общий родитель и форма не одна на странице, то этот обработчик будет установлен на все формы. |
Так как вы написали все работает но происходит перезагрузка всей страницы а не только контента..
|
Значит форма отправляется, а не должна - return false;
Чего то не то делается. |
Сори...Были ошибки...После исправления Нихрена не работает
Сейчас код такой...пробывал менять 'form' итог тот же $(document).ready(function() { $('.mod1').click(function() { var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); if(url != window.location){ window.history.pushState(null, null, url); } return false; }); $('#content').on('click','.mod2',function(){ var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data).find('#postform').submit(function(){ $.ajax({ type: 'POST', url: this.action, dataType: "html", data: $(this).serialize(), success: function(data2){ $('#content').html(data2); } }); }); } }); if(url != window.location){ window.history.pushState(null, null, url); } return false; }); $('#content').on('click','.rem1',function(){ var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); return false; }); $(window).bind('popstate', function() { $.ajax({ url: '?ajax=' + location.search, success: function(data) { $('#content').html(data); } }); }); });.. Если обновляю страницу то пост приходит..если через меню подгружаю страницу то пост не приходит |
Часовой пояс GMT +3, время: 07:02. |