Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.10.2012, 01:02
Интересующийся
Отправить личное сообщение для nvp2 Посмотреть профиль Найти все сообщения от nvp2
 
Регистрация: 31.10.2012
Сообщений: 15

jSONP отправка и получение (в зависимости от критерия) данных
Приветствую, уважаемые ГУРУ.
Будьте добры, покажите небольшой пример такой задачи. На стороне пользователя посредством JSONP серверу нужно передать значение переменной IQ. На стороне сервера анализируется это значение и если оно больше, к примеру, 100 - то обратно отсылает значение переменной K1, если меньше - К2 и выводится пользователю.

Сами логические операции и вывод конечного результата в браузере проблем не составляет, а вот прием и передача значений посредством JSONP для меня оказалось большой проблемой. Два дня серфинга просторов интернета и разбора примеров не дали ни каких результатов
Ответить с цитированием
  #2 (permalink)  
Старый 31.10.2012, 09:50
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

О_о как так, про ajax столько материалов, что наверное пол жизни читать будешь и все пишут почти про одно и то же. Пишите на чём встряли, дальше думаю помогу...
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 31.10.2012, 11:56
Интересующийся
Отправить личное сообщение для nvp2 Посмотреть профиль Найти все сообщения от nvp2
 
Регистрация: 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'});";}

?>
Ответить с цитированием
  #4 (permalink)  
Старый 31.10.2012, 12:46
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 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"}';
Ответить с цитированием
  #5 (permalink)  
Старый 31.10.2012, 13:01
Интересующийся
Отправить личное сообщение для nvp2 Посмотреть профиль Найти все сообщения от nvp2
 
Регистрация: 31.10.2012
Сообщений: 15

по поводу jsopn - точно. с 2-х сайтов хочу вести лог в одном месте - на третьем.

А как правильно на стороне php вырезать значение переданной пеменной, чтобы работать с ней как с обыкновенной php-переменной $iq?
На стороне клиента более менее все понятно, а вот серверная реализация нет
Заранее благодарю за ответ
Ответить с цитированием
  #6 (permalink)  
Старый 31.10.2012, 13:42
Интересующийся
Отправить личное сообщение для nvp2 Посмотреть профиль Найти все сообщения от nvp2
 
Регистрация: 31.10.2012
Сообщений: 15

С передачей разобрался... Спасибо огромное, Dmitriyff.

Но теперь другая трабла. Сервер передает значение ({'result':'777'})

но ajax код не срабатывает
success: function(data) {
alert(data.result);
}

Хотя по идее должен

Последний раз редактировалось nvp2, 31.10.2012 в 14:23.
Ответить с цитированием
  #7 (permalink)  
Старый 31.10.2012, 14:47
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 31.10.2012, 14:58
Интересующийся
Отправить личное сообщение для nvp2 Посмотреть профиль Найти все сообщения от nvp2
 
Регистрация: 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.
Ответить с цитированием
  #9 (permalink)  
Старый 31.10.2012, 15:10
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

nvp2,
Формат json: {"параметр1":"значение1","пара метр2":"значение2"}
jsonp: callback функци(тоже самое что и выше)
Обрати внимание на кавычки...
__________________
.

Последний раз редактировалось Skipp, 31.10.2012 в 15:12.
Ответить с цитированием
  #10 (permalink)  
Старый 31.10.2012, 15:24
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тупик... Вставка данных в зависимости от SELECT xaocbozzz Элементы интерфейса 3 03.05.2012 04:57
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Получение данных строки грида при нажатии сторонней кнопки Allan Stark ExtJS 4 17.11.2011 19:21
Получение данных NeoMurderer AJAX и COMET 11 21.08.2011 14:46
Автоматическое получение данных из формы Beck jQuery 6 06.11.2009 18:01