Как получить параметр из URL в PHP, но после загрузки страницы с помощью jQuery?

#javascript #jquery

#javascript #jquery

Вопрос:

Мне нужно получить URL-адрес формы параметра (даты) с помощью php, но после загрузки «step-02.php » с помощью .load jQuery.

Например:

 http://localhost:8000/selectRoom?hotelID=100amp;date=2016-11-08amp;night=5
  

Я получаю 2016-11-08 значение из URL с помощью php $_GET['date'] , но после загрузки step-02.php с помощью jQuery этот код $_GET['date'] не работает.

 $(function () {
   $('#Step-01').hide();
   $('#Step-02').show();
   $('#Step-02').load('step_02.php');
})
  

HTML в step-02.php :

 <div class="alert alert-success">
   // This line gives an error and not work!
   <?php echo $_GET['date']; ?> 
</div>
  

Комментарии:

1. Вам не нужно использовать php $_GET['date'] для получения параметра даты. Вы можете проанализировать URL в javascript и получить целевое значение.

2. @Mohammad Спасибо, Мохаммад.

Ответ №1:

http не имеет состояния, поэтому, если вы не передадите дату обратно в ajax-запросе или не сохраните ее в сеансе, сервер не сможет запомнить, что вы сказали ему ранее.

Поместите это в step1.php где — то

 <input type="hidden" id="date-input" value="<?php echo $_GET['date']?>" />
  

Затем сделайте это:

 $(function () {
  var date = $('#date-input').val();
  $('#Step-01').hide();
  $('#Step-02').show();
  $('#Step-02').load('step_02.php?date=' date);
})
  

Комментарии:

1. Спасибо за ответ, но как получить 2016-01-01 URL формы?

2. Вам не нужно получать его из URL, создайте скрытый ввод на странице в step1.php <идентификатор ввода = «dateinput» тип =»скрытое» значение =»<?php echo $_Get[‘date’]?>» /> Затем вы можете получить к нему доступ с помощью Jquery и добавитьэто URL, который вы загружаете

3. Все, что вам нужно сделать, это добавить его в качестве параметра в вызов AJAX. Как только вы это сделаете, ваш существующий код будет работать. Причина, по которой это не сработает, заключается в том, что нет параметра date для echo, если вы его не отправляете

Ответ №2:

если я хорошо понимаю, сначала вы вызываете этот URL-адрес с такими параметрами : http://localhost:8000/selectRoom?hotelID=100amp;date=2016-11-08amp;night=5 , вот почему в вашем PHP-файле вы можете получить параметры , $_GET['hotelID'] , $_GET['date'] и $_GET['night'] .

Когда вы вызываете step_02.php

URL-адрес не меняется на новый, он остается таким, каким был : http://localhost:8000/selectRoom?hotelID=100amp;date=2016-11-08amp;night=5 , и в этом проблема! Файл php step_02.php , не получил никаких параметров от клиента по запросу сервера, поэтому он не распознает никаких параметров, хотя они указаны в URL.

Решения:

A. Вы можете получить URL-адрес с помощью : $_SERVER['HTTP_REFERER'] , который предоставит вам весь URL-адрес как есть, и с помощью explode("?", $_SERVER['HTTP_REFERER']) которого вы получите часть URL-адреса с параметрами, после этого вы можете снова использовать explode ..

B. вы можете передать нужные параметры во время выполнения ajax-вызова на сервер и получить их с $_GET['parameter' помощью ], вот так:

 data = {'hotelID':100,'date':2016-11-08,'night':5};
        $.ajax({
            cache: false,
            url : url,
            type: "GET",
            data : data,
            beforeSend: function( xhr ) {
                //load your spinner img
            },
            success : function(data, textStatus, jqXHR){
                //get response from server
            },
            error : function(xhr, ajaxOptions, thrownError){
                alert(thrownError);
            }
        });
  

ИЛИ, если это необходимо, с load():

 $('#Step-02').load('path', 'key=value');
  

Надеюсь, поможет, удачи.

Комментарии:

1. Если вы хотите использовать $_GET, вы не должны использовать POST-запрос.

Ответ №3:

Ваш вопрос неясен, но я предполагаю, что вы хотите получить значение даты после загрузки.

Используйте callback()

 $('#Step-02').load('step_02.php', function(response, status, xhr) {
  alert( "Load was performed." );
  console.log(response);
});
  

Комментарии:

1. Вы должны использовать параметр, как response в функции, чтобы получить содержимое загрузки.

2. Прошу вас ответить, но мне нужно получить URL-адрес формы параметра даты. но после загрузки страницы с помощью jQuery этот код в step-02.php -> `$_GET[‘date’] не работает.

3. Итак, когда ваша страница step-02.php готова, вы хотите получать загрузку только с этой страницы, верно?

4. @Mohammad Спасибо за ваш отзыв, я обновил свой ответ.

5. Если вы хотите получить параметр URL, вы можете напрямую сделать это в jQuery, используя querystring, почему вы загружаете step2.php и получить там свидание ?