Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Нужна помощь с отправкой формы (https://javascript.ru/forum/events/55311-nuzhna-pomoshh-s-otpravkojj-formy.html)

tiundv 22.04.2015 20:56

window.history.pushState(null, null, url); //с какой целью не понятно
Это смена адреса поле адреса браузера..

laimas 22.04.2015 20:59

Это смена адреса поле адреса браузера..

Зачем это при отправке формы методом POST и асинхронным способом?

tiundv 22.04.2015 21:05

Та функция которую вы изменили отвечает за подгрузку контента из меню по url-ам.
А это window.history.pushState(null, null, url); записывает в память браузера урлы страниц чтоб можно было туда обратно гулять по страницам.. у меня статичная только одна страница ...шаблон с меню...остальное все подгружается динамически...
Самое прикольно что гет отрабатывает отлично а вот пост никак немогу освоить...Может есть другие варианты отправки форм из подгруженного контента?

tiundv 22.04.2015 21:15

Вот мой весь код
$(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);
                    }
                });
            });
        });

laimas 22.04.2015 21:20

Понятно, то есть однострочник, а форма вызывается в каком-то разделе ее.

Вариант второй, который я показал, в любом случае будет работать, так как форме "навешивается" обработчик сразу при ее добавлении на страницу. То есть отправка будет гарантировано, это можно в отладчике проследить. А если не получается с ответом, то может быть только одна причина - сервер: а) неверный url запроса, б) неверный сценарий приема формы, и) и т.д...

tiundv 22.04.2015 21:23

Попробую и отпишусь..

laimas 22.04.2015 21:29

Пробуйте, только здесь:
$('#content').html(data)
    .find('form')//заменить на .find('#postform')

ведь однострочник, и если '#content' общий родитель и форма не одна на странице, то этот обработчик будет установлен на все формы.

tiundv 22.04.2015 21:47

Так как вы написали все работает но происходит перезагрузка всей страницы а не только контента..

laimas 22.04.2015 22:00

Значит форма отправляется, а не должна - return false;
Чего то не то делается.

tiundv 22.04.2015 22:04

Сори...Были ошибки...После исправления Нихрена не работает
Сейчас код такой...пробывал менять '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.