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, время: 08:11. |