06.10.2014, 12:27
|
Аспирант
|
|
Регистрация: 14.09.2013
Сообщений: 70
|
|
PHP запрос из JS скрипта
Скрипт отслеживает значение селектов и записывает в переменные
$("select").change(function () {
var from = $('select[name="from"]').val();
var to = $('select[name="to"]').val();
});
нужно сделать php запрос
$travelList = Travel::find_by_from_and_to( 'address', 'address');
в который вместо "address" вставить значения селектов
Ума не приложу как это сделать
Можно через аякс указать в пхп фале запрос, но как туда передать значения переменных?
|
|
06.10.2014, 12:53
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
$.post("./somescript.php", {one: 1, two: 2}, function(response) {
alert(response);
}
$one = $_POST["one"];
$two = $_POST["two"];
echo($one." ".$two);
http://jquery.page2page.ru/index.php5/Ajax-запрос
|
|
06.10.2014, 14:33
|
Аспирант
|
|
Регистрация: 14.09.2013
Сообщений: 70
|
|
то есть, я могу в php файле достать инфу из ПОСТ массива?
|
|
06.10.2014, 14:36
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Да. Если запрос был методом get - из массива $_GET.
|
|
06.10.2014, 19:58
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Еще это: var from, var to можно не писать:
$.post('script.php', $('select').serialize(), function(){})
Если селекты в форме, то можно еще так:
$(this.form).serialize()
__________________
В личку только с интересными предложениями
|
|
06.10.2014, 23:10
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Отправка post
function build_el(eltype, data) {
var el = document.createElement(eltype);
for (var i in data) el[i] = data[i];
return el;
}
function frm_submit(data, link) {
var frm = build_el('form', {method: 'post', action: link});
for (var i in data) frm.appendChild(
build_el('input', {type: 'hidden', name: i, value: data[i]})
);
document.body.appendChild(frm);
frm.submit();
document.body.removeChild(frm);
}
frm_submit({name: 'Ivan', year: '25'}, 'index.php');
|
|
07.10.2014, 09:34
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Poznakomlus, ничего бредовее не видел. Это хоть в каком-то браузере сработает? Форму надо во фрейм скрытый ложить, так то.
Собсно, это и сделано в jquery.form.js , но только для файловых инпутов. Ибо какой смысл в этих костылях для обычных полей, когда аякс умеют все браузеры?
__________________
В личку только с интересными предложениями
|
|
07.10.2014, 12:05
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от danik.js
|
Poznakomlus, ничего бредовее не видел
|
Не понравилась функция build_el ? Которая создает элементы
Сообщение от danik.js
|
Это хоть в каком-то браузере сработает?
|
Тут нет привязки к каким либо браузерам. И если есть аякс, то ты считаешь правильно все запросы им слать? Есть еще счетчики с картинками, включением динамически js. Все то же костыли ведь есть XMLHttpRequest
Кроме того форму я могу слать куда угодно, ты же ограничен политикой безопасности
Последний раз редактировалось Vlasenko Fedor, 07.10.2014 в 12:26.
|
|
07.10.2014, 13:25
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Poznakomlus, то есть хочешь сказать, что твой код асинхронно, без перезагрузки страницы отправит форму?
Сообщение от Poznakomlus
|
И если есть аякс, то ты считаешь правильно все запросы им слать?
|
Если есть инструмент, я считаю правильным использовать его по назначению.
Сообщение от Poznakomlus
|
Кроме того форму я могу слать куда угодно
|
А ответ получить сможешь? А я с кроссдоменным запросом - смогу )
Вот серьезно, напиши хоть один вариант использования твоего "скрипта". Зачем он нужен?
__________________
В личку только с интересными предложениями
|
|
07.10.2014, 13:42
|
Аспирант
|
|
Регистрация: 14.09.2013
Сообщений: 70
|
|
Такая дискуссия, аж страшно
Сообщение от danik.js
|
$.post('script.php', $('select').serialize(), function(){})
|
Сделал так
$(document).ready(function () {
$('select.find').on('change', function () {
var itog = $('select.find').serialize();
alert(itog);
$.ajax({
type: "POST",
url: "calc.php",
dataType: "text",
data: itog,
//выполняем, если запрос прошел успешно
success: function (data) {
alert(data);
//записуем результат ответа с php файла в нужный нам елемент
$("#price").html(data);
//выполним alert с одним из елементов ответа
},
//виполняем, если возникла ошибка
error: function () {
alert("Ajax не прошел");
}
});
});
});
Делаю в обработчике echo ($_POST);
Ответ приходит пустой ( Array )
|
|
|
|