2015-10-18 2 views
0

Я пытаюсь достичь этого: php form. jquery formubmit. когда форма была отправлена ​​- пользователь перенаправляется Код:еще одно перенаправление после формы submit

$(document).ready(function() { 

    $('#submit').click(function(e){ 
    $("form").submit(); 
    window.location.href = '<?=$http_path?>/usr/checkout_invoice'; 
    e.preventDefault(); 
    return false; }); 

}); 

Он либо отправляет код (когда redrect выключен) или переадресовывает, но никогда не делает две вещи, как предполагалось.

что мне не хватает ????

Update

Окей. Хороший парень ниже предложил использовать AJAX. Вот Teh решение (который работал) для тех, кто интересуется:

$(document).ready(function() { 

    $('#shipping_ok').bind('click touchstart', function(e){ 
     e.preventDefault(); 

     var city = $('#city').val(); 
     var province = $('#province').val(); 
     var zip = $('#zip').val(); 

     $.ajax({  
      type : 'POST', 
      url : '<?=$http_path?>/usr/ja.php', 
      data: {city : city,province : province,zip : zip}, 
      success : function(data){ 
       window.location.href = '<?=$http_path?>/usr/checkout_invoice'; 
      }, 
      error : function(XMLHttpRequest, textStatus, errorThrown) { 
       alert ("Error Occured"); 
      } 
     }); 
     return false; 
    }); 

}); 
</script> 
+4

Форма submit представляет собой запрос на любой URL-адрес, указанный в атрибуте 'action' формы, и заставляет браузер показывать, какой ответ возвращается из этого запроса. (Если никакое действие не указано, оно отправляется на текущую страницу.) Таким образом, поведение, скорее всего, столкнется с попыткой установить 'location.href', который является другим видом запроса страницы. – nnnnnn

+0

action is SELF , но .. похоже, что ваше предложение верно ... gotta переработать его с ajax тогда (хм .. если THAt будет работать) ... – Rossitten

+1

Отправить ajax и установить 'location.href' из в вашем обработчике успеха ajax. – nnnnnn

ответ

1

Некоторые советы о том, почему он не работает.

форма передает это сообщение спиной к серверу, они будут перезагрузить страницу ... (как правило, тот же URL)

Как браузер облигация на страницу, когда вы отправите форму, запрос на сервер будет получен ответ.

В этот момент он начинает заменять текущую страницу новой страницей ответов.

Новая страница ответа не будет знать ничего о том, что произойдет раньше.

Это перезагрузит javascript и эффективно аннулирует любой javascript, который выполнялся или будет запущен на странице.

так ...

$("form").submit(); 
//page is reloaded from server... loosing content of any javascript. 

//anything below wont happen 
--------------------- 
//window.location.href = '<?=$http_path?>/usr/checkout_invoice'; 

Javascript расположение окно не будет ... как страница перезагрузки, по времени он перезагружается, он не знает, что страница была в яваскрипте функции ... так что перенаправление не произойдет.

+0

Спасибо, друг. хорошо объяснил и, да ... это было, возможно, довольно просто для Google (хотя я сначала попытался найти ответ здесь, не повезло). – Rossitten

+0

@ Rossitten np Я так думал, был там тоже ;-) все хорошо. – Seabizkit

Смежные вопросы