#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 и получить там свидание ?