22.04.2015, 20:56
|
Аспирант
|
|
Регистрация: 22.04.2015
Сообщений: 32
|
|
window.history.pushState(null, null, url); //с какой целью не понятно
Это смена адреса поле адреса браузера..
|
|
22.04.2015, 20:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Это смена адреса поле адреса браузера..
Зачем это при отправке формы методом POST и асинхронным способом?
|
|
22.04.2015, 21:05
|
Аспирант
|
|
Регистрация: 22.04.2015
Сообщений: 32
|
|
Та функция которую вы изменили отвечает за подгрузку контента из меню по url-ам.
А это window.history.pushState(null, null, url); записывает в память браузера урлы страниц чтоб можно было туда обратно гулять по страницам.. у меня статичная только одна страница ...шаблон с меню...остальное все подгружается динамически...
Самое прикольно что гет отрабатывает отлично а вот пост никак немогу освоить...Может есть другие варианты отправки форм из подгруженного контента?
Последний раз редактировалось tiundv, 22.04.2015 в 21:09.
|
|
22.04.2015, 21:15
|
Аспирант
|
|
Регистрация: 22.04.2015
Сообщений: 32
|
|
Вот мой весь код
$(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);
}
});
});
});
Последний раз редактировалось tiundv, 22.04.2015 в 21:18.
|
|
22.04.2015, 21:20
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Понятно, то есть однострочник, а форма вызывается в каком-то разделе ее.
Вариант второй, который я показал, в любом случае будет работать, так как форме "навешивается" обработчик сразу при ее добавлении на страницу. То есть отправка будет гарантировано, это можно в отладчике проследить. А если не получается с ответом, то может быть только одна причина - сервер: а) неверный url запроса, б) неверный сценарий приема формы, и) и т.д...
|
|
22.04.2015, 21:23
|
Аспирант
|
|
Регистрация: 22.04.2015
Сообщений: 32
|
|
Попробую и отпишусь..
|
|
22.04.2015, 21:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Пробуйте, только здесь:
$('#content').html(data)
.find('form')//заменить на .find('#postform')
ведь однострочник, и если '#content' общий родитель и форма не одна на странице, то этот обработчик будет установлен на все формы.
|
|
22.04.2015, 21:47
|
Аспирант
|
|
Регистрация: 22.04.2015
Сообщений: 32
|
|
Так как вы написали все работает но происходит перезагрузка всей страницы а не только контента..
|
|
22.04.2015, 22:00
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Значит форма отправляется, а не должна - return false;
Чего то не то делается.
|
|
22.04.2015, 22:04
|
Аспирант
|
|
Регистрация: 22.04.2015
Сообщений: 32
|
|
Сори...Были ошибки...После исправления Нихрена не работает
Сейчас код такой...пробывал менять '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);
}
});
});
});
..
Если обновляю страницу то пост приходит..если через меню подгружаю страницу то пост не приходит
Последний раз редактировалось tiundv, 22.04.2015 в 22:18.
|
|
|
|