2015-01-02 3 views
0

есть тело, которое может помочь мне решить мою проблему. У меня есть 3 файла index.phpprocess.jsredirect_process.php. ну, index.php - моя домашняя страница, и внутри есть форма. и process.js является вызовом каждый раз, когда нажимается кнопка button submit, чтобы проверить данные формы, поэтому, если есть данные, введенные с ошибкой, просто не возвращайтесь в true и не показывайте какое-то сообщение об ошибке, иначе возвращайтесь в true, а затем перенаправляете в другой страницы с redirect_process.php. вот мой код process.js:AJAX всегда возвращается на главную страницу

$(document).ready(function(){ 
    $('#form_side').submit(function() { 
    var name_this = /^[a-zA-Z-' ]+$/; 
    var return_process = false; 
    if(name_this.test(document.getElementById("input_field_one").value) == false){ 
    alert('Error!'); 
    return_process = false; 
    }else{ 
    $.ajax({ 
       type:"POST", 
       url:"./r_p/redirect_process.php",//the link to call redirect process 
       data: $("#my_form").serialize(), 
       success: function(response){ 
       $("#my_form").trigger('reset'); 
    } }); 
       //No more validation here, so i want to go into another page now by returning into TRUE 
       return_process = true; //This will be the cause now to go to another page. 
    } 
    return return_process; 
}); 
}); 

так что позволяет сказать, теперь есть ошибки не вводятся данные, и я хочу сейчас перенаправляет на другую страницу с помощью redirect_process.php. Вот мой код redirect_process.php:

...Some validation here 
if (data is ok, and no error) { 
    //Redirect into correct page 
    header('Location: http://localhost/test/correct_page.php'); 
}else{ 
    //Redirect into wrong page 
    header('Location: http://localhost/test/wrong_page.php'); 
} 

проблема, она всегда возвращается в index.php он не перенаправлять в любой ссылке выше. пожалуйста, помогите мне. Спасибо!

+0

Возможно, вы не вернете 'false' в своей форме. Всегда возвращайте 'false' в вашу функцию отправки. – Mouser

ответ

1

наверняка все будет происходить в вашем index.php причина вы звоните заголовок внутри файла PHP, который вы используете его с AJAX заголовок будет работать, если вы идете в redirect_process.php непосредственно (и всегда использовать выход (); после заголовка();)

ли, что в PHP

...Some validation here 
if (data is ok, and no error) { 
    echo('OK'); 
}else{ 
    echo('Not OK'); 
} 

затем в представить событие в Js

$(document).ready(function(){ 
    $('#form_side').submit(function(e) { 
    e.preventDefault;        // use e.preventDefault; 
    var name_this = /^[a-zA-Z-' ]+$/; 
    var return_process = false; 
    if(name_this.test(document.getElementById("input_field_one").value) == false){ 
    alert('Error!'); 
    return_process = false; 
    }else{ 
    $.ajax({ 
       type:"POST", 
       url:"./r_p/redirect_process.php",//the link to call redirect process 
       data: $("#my_form").serialize(), 
       success: function(response){ 
       $("#my_form").trigger('reset'); 
       if(response == 'OK'){ 
       window.location.href= "http://localhost/test/correct_page.php"; 
       }else{ 
       window.location.href= "http://localhost/test/wrong_page.php"; 
       } 
    } }); 
       //No more validation here, so i want to go into another page now by returning into TRUE 
       return_process = true; //This will be the cause now to go to another page. 
    } 
    return return_process; 
}); 
}); 
1

Это следует сделать это:

$(document).ready(function(){ 
    $('#form_side').submit(function(event) { 
    var name_this = /^[a-zA-Z-' ]+$/; 
    var return_process = false; 
    if(name_this.test(document.getElementById("input_field_one").value) == false){ 
    alert('Error!'); 
    return_process = false; 
    }else{ 
    $.ajax({ 
       type:"POST", 
       url:"./r_p/redirect_process.php",//the link to call redirect process 
       data: $("#my_form").serialize(), 
       success: function(response){ 
       $("#my_form").trigger('reset'); 
    } }); 

    } 
     event.preventDefault(); //this line prevents the form from executing it's action, which is none and that triggers a reload. 
    return false; 
}); 
}); 

вы вызов onsubmit события через jQuery.submit. При анализе это событие вызывает действие форм. Поскольку он не определен, поскольку вы используете AJAX, это вызывает перезагрузку.

event.preventDefault()

это предотвращает событие от стрельбы действия.

...Some validation here 
if (data is ok, and no error) { 
    //Redirect into correct page 
    header('Location: http://localhost/test/correct_page.php'); 
    }else{ 
    //Redirect into wrong page 
     header('Location: http://localhost/test/wrong_page.php'); 
    } 

Линия заголовка работает, но не в вашей ситуации. Он сообщает браузеру, чтобы загрузить страницу в ответ. Этот ответ загружается в ответ AJAX, а не перенаправляет текущую страницу. Используйте для этого @Mohamed-Yousef.

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