jSONP отправка и получение (в зависимости от критерия) данных
Приветствую, уважаемые ГУРУ.
Будьте добры, покажите небольшой пример такой задачи. На стороне пользователя посредством JSONP серверу нужно передать значение переменной IQ. На стороне сервера анализируется это значение и если оно больше, к примеру, 100 - то обратно отсылает значение переменной K1, если меньше - К2 и выводится пользователю. Сами логические операции и вывод конечного результата в браузере проблем не составляет, а вот прием и передача значений посредством JSONP для меня оказалось большой проблемой. Два дня серфинга просторов интернета и разбора примеров не дали ни каких результатов :cray: |
О_о как так, про ajax столько материалов, что наверное пол жизни читать будешь и все пишут почти про одно и то же. Пишите на чём встряли, дальше думаю помогу...
|
Проблема в том, что не могу понять сам принцип. Все примеры что нашел, работают либо с 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'});";} ?> |
для начала, вы уверены что вам нужен 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"}'; |
по поводу jsopn - точно. с 2-х сайтов хочу вести лог в одном месте - на третьем.
А как правильно на стороне php вырезать значение переданной пеменной, чтобы работать с ней как с обыкновенной php-переменной $iq? На стороне клиента более менее все понятно, а вот серверная реализация нет Заранее благодарю за ответ |
С передачей разобрался... Спасибо огромное, Dmitriyff.
Но теперь другая трабла. Сервер передает значение ({'result':'777'}) но ajax код не срабатывает success: function(data) { alert(data.result); } Хотя по идее должен |
Ответ сервера может быть:
$response = array( "result" => "777", "result2" => "888", "result3" => "999" ); // $response может быть готовым объектом или массивом return json_encode(str_replace('\'', '"', $response)); // преобразование объектов php в json-формат |
Что-то я совсем запутался.
Вот что у меня есть: клиентский код... 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,
Формат json: {"параметр1":"значение1","пара метр2":"значение2"} jsonp: callback функци(тоже самое что и выше) Обрати внимание на кавычки... |
Может проблема в адресе?
url: 'http://site.ru/jsonpp.php?callback=?', и на сервере json_decode надо при передаче объектов: $data = json_decode($_GET['IQ']); если передаете простые переменные: $data =$_GET['IQ']; |
Часовой пояс GMT +3, время: 05:14. |