31.10.2012, 01:02
|
Интересующийся
|
|
Регистрация: 31.10.2012
Сообщений: 15
|
|
jSONP отправка и получение (в зависимости от критерия) данных
Приветствую, уважаемые ГУРУ.
Будьте добры, покажите небольшой пример такой задачи. На стороне пользователя посредством JSONP серверу нужно передать значение переменной IQ. На стороне сервера анализируется это значение и если оно больше, к примеру, 100 - то обратно отсылает значение переменной K1, если меньше - К2 и выводится пользователю.
Сами логические операции и вывод конечного результата в браузере проблем не составляет, а вот прием и передача значений посредством JSONP для меня оказалось большой проблемой. Два дня серфинга просторов интернета и разбора примеров не дали ни каких результатов
|
|
31.10.2012, 09:50
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
О_о как так, про ajax столько материалов, что наверное пол жизни читать будешь и все пишут почти про одно и то же. Пишите на чём встряли, дальше думаю помогу...
__________________
.
|
|
31.10.2012, 11:56
|
Интересующийся
|
|
Регистрация: 31.10.2012
Сообщений: 15
|
|
Проблема в том, что не могу понять сам принцип. Все примеры что нашел, работают либо с yahoo либо еще с чем то.
Ковыряю вот такой пример
var IQ = $('#iq').val();
$.ajax({
url: 'http://site.ru/json.php?callback=?',
type: 'get',
dataType : 'jsonp',
success: function(data){
// выводим результат
}
});
вот не могу понять (чувствую себя уже полным ...ком) как передать значение IQ серверу. и на стороне сервера как ее обработать... к примеру чтобы можно было отправить обратно вот таким вот выдом:
<?php
...
$iq = значение переданной переменной;
if ($iq > 100) {echo $_GET['callback']."({result:'больше 100'});";}
else {echo $_GET['callback']."({result:'меньше 100'});";}
?>
|
|
31.10.2012, 12:46
|
Профессор
|
|
Регистрация: 22.07.2012
Сообщений: 164
|
|
для начала, вы уверены что вам нужен jsonp, скрипты находятся на одном сайте?
вот тут подробней про работу jQuery.ajax
ну и простой скрипт передачи параметров на сервер
var IQ = $('#iq').val();
$.ajax({
url: 'http://somesite',
data: {
IQ: IQ // передвем IQ
},
type: 'GET' // тип запроса, в данном случае GET, переменная будет для php в $_GET['IQ'],
dataType: 'json' // ожидаемый тип ответа
success: function(data) {
// тута data будет распарсенный объект
}
})
// ответ php должен быть правильный json
'{"name": "value"}';
|
|
31.10.2012, 13:01
|
Интересующийся
|
|
Регистрация: 31.10.2012
Сообщений: 15
|
|
по поводу jsopn - точно. с 2-х сайтов хочу вести лог в одном месте - на третьем.
А как правильно на стороне php вырезать значение переданной пеменной, чтобы работать с ней как с обыкновенной php-переменной $iq?
На стороне клиента более менее все понятно, а вот серверная реализация нет
Заранее благодарю за ответ
|
|
31.10.2012, 13:42
|
Интересующийся
|
|
Регистрация: 31.10.2012
Сообщений: 15
|
|
С передачей разобрался... Спасибо огромное, Dmitriyff.
Но теперь другая трабла. Сервер передает значение ({'result':'777'})
но ajax код не срабатывает
success: function(data) {
alert(data.result);
}
Хотя по идее должен
Последний раз редактировалось nvp2, 31.10.2012 в 14:23.
|
|
31.10.2012, 14:47
|
|
Аспирант
|
|
Регистрация: 12.04.2012
Сообщений: 49
|
|
Ответ сервера может быть:
$response = array(
"result" => "777",
"result2" => "888",
"result3" => "999"
); // $response может быть готовым объектом или массивом
return json_encode(str_replace('\'', '"', $response)); // преобразование объектов php в json-формат
Последний раз редактировалось NikolasGrad, 31.10.2012 в 14:57.
|
|
31.10.2012, 14:58
|
Интересующийся
|
|
Регистрация: 31.10.2012
Сообщений: 15
|
|
Что-то я совсем запутался.
Вот что у меня есть: клиентский код...
var iq = '777';
$.ajax({
url: 'http://site.ru/jsonpp.php?callback=?',
data: { IQ: iq },
type: 'GET',
dataType: 'jsonp',
crossDomain: true,
success: function(res) {
alert(res.result);
}
});
Серверный код:
$data = json_decode($_GET['IQ']);
if ($data == '777') {
$response = array(
"result" => "111"
);
}
else {
$response = array(
"result" => "000"
);
}
return json_encode(str_replace('\'', '"', $response));
Раньше дебугер возвращал ответ "({'result':'777'})", сейчас - "Перезагрузите страницу, чтобы получить источник для: http://site.ru/jsonpp.php?callback=jsonp1351680978035&_=135168097 8053&IQ=777"
Последний раз редактировалось nvp2, 31.10.2012 в 15:00.
|
|
31.10.2012, 15:10
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
nvp2,
Формат json: {"параметр1":"значение1","пара метр2":"значение2"}
jsonp: callback функци(тоже самое что и выше)
Обрати внимание на кавычки...
__________________
.
Последний раз редактировалось Skipp, 31.10.2012 в 15:12.
|
|
31.10.2012, 15:24
|
|
Аспирант
|
|
Регистрация: 12.04.2012
Сообщений: 49
|
|
Может проблема в адресе?
url: 'http://site.ru/ jsonpp.php?callback=?',
и на сервере json_decode надо при передаче объектов:
$data = json_decode($_GET['IQ']);
если передаете простые переменные:
$data =$_GET['IQ'];
Последний раз редактировалось NikolasGrad, 31.10.2012 в 15:30.
|
|
|
|