Сделайте перенаправление JavaScript после вызова AJAX - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь использовать ajax для анализа данных, которые будут обрабатываться на странице php, и заставить php echo перенаправить javascript на другую страницу, но это не работает. Я читал, что js не работает после выполнения вызова ajax, поэтому я хотел бы знать, есть ли способ обойти это. Это мой код:

html

<form>
    <div class="depart_time bottom_white w-40 ml-auto">
            <p>Time</p>
            <input type="time" name = "return_time" id = "rt">
    </div>
    <div class = "search_button r_search">
        <button id = "r_search" onclick = "return false" onmousedown = "rent()">SEARCH</button>
    </div>

</form>

ajax-вызов - это обычный запрос xhttp, который отправляется php для обработки, после чего должно произойти перенаправление:

if(isset($_POST['return_time'])){
    echo '<script type="text/javascript">window.location.href="link.html"</script>';
}

Пожалуйста, помощь приветствуется. Я новичок в использовании ajax.

РЕДАКТИРОВАТЬ код ajax:

gid("r_search").addEventListener("mousedown", rent);
    function rent(){
        rt = gid('rt').value;
        r_search = gid('r_search').value;

        form_array = '&rt=' + rt +
        '&r_search=' + r_search;

        send_data = form_array;

        ajax_data('app/rent.php', 'error', send_data);
        //gid('error').innerHTML = send_data;
    }


function ajax_data(php_file, getId, send_data){
        gid(getId).innerHTML = "loading";
        var xhttpReq = new XMLHttpRequest();
        xhttpReq.open("POST", php_file, true);
        xhttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttpReq.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                gid(getId).innerHTML = xhttpReq.responseText;
            }
        };
        xhttpReq.send(send_data);
    }

обратите внимание, что 'gid' предназначен для getelementbyid

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Вы должны внести изменения в ваш способ перенаправления.

Сначала вам нужно внести изменения в ваш ответ PHP

if(isset($_POST['return_time'])){
    ...

    // If you get your process success return 1
    if(success) { 
        echo 1; die(); 
    } else {
        // else set some flag that you could get on your AJAX response
        echo 0; die();
    }
}

Теперь установите этот флаг на свой AJAX и сделайтеизменения в ваших следующих функциях:

function ajax_data(php_file, getId, send_data){
        gid(getId).innerHTML = "loading";
        var xhttpReq = new XMLHttpRequest();
        xhttpReq.open("POST", php_file, true);
        xhttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttpReq.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                if( xhttpReq.responseText == 1 ) window.location.href="URL where you wish to redirect page";
            }
        };
        xhttpReq.send(send_data);
    }

Я написал этот ответ для тех, кто приходит сюда за помощью.

0 голосов
/ 03 октября 2019

закройте брекет

   if(isset($_POST['return_time'])){
        echo '<script type="text/javascript">window.location.href="link.html"</script>';
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...