LINUX.ORG.RU

jQuery + $.getJSON + PHP


0

1
$.getJSON('http://anotherdomain/script.php?jcallback=?', 
  function(data) { 
    alert(data.result); 
});
<?
  $a = array();
  $a['result'] = 123;
  // header('Content-type: application/json;');
  print $_GET['jcallback'] . '(' . json_encode($a) . ');';
?>

В файрфоксе в файрбаге на вкладке сети страничка с js показывает незаканчивающийся GET запрос, который является результатом работы getJSON. Раскоментирование header в php-скрипте не помогает. Если я меняю адрес в js на:

http://search.twitter.com/search.json?lang=ru&rpp=10&callback=?&q=

то всё работает (там нет свойства result, alert выдаёт undefined). Не пойму, что у меня в сравнении с твиттеровским ресурсом в php не хватает.

★★

Последнее исправление: Reaper (всего исправлений: 2)

Ответ на: комментарий от anonymous

Чего сразу не написать правильный вариант? Где ошибка-то?

Ты имел в виду JSONP, а не JSON? Ведь именно JSONP требуется $.getJSON().

Reaper ★★
() автор топика
Ответ на: комментарий от urxvt

Да нет же, кроссдоменный запрос. Нельзя ему отдавать просто JSON. Ну и кроме того, попробовал, не помогло.

Reaper ★★
() автор топика
Ответ на: комментарий от Reaper

> Да нет же, кроссдоменный запрос. Может тогда дело в настройках браузера? А на твитер пускает ввиду его наличия в «белом списке».

urxvt ★★★★★
()

1) в uri не должно присутствовать более одного "?", ибо оно какбы отделяется имя скрипта от гет-параметров. хотите передавать параметрами всякую непотребщину — пользуйте URLEncode или serialize

2) json является форматом представления данных, а любым валидным яваскриптом. так что я не понимаю чего вам нужно от
"?"({«result»:«123»}); /* и как яваскрипт это тоже не валидно */
есть предположение что вам нужно получить просто {«result»:«123»}

anonymous
()
Ответ на: комментарий от anonymous

* а не любым валидным яваскриптом

пардон

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.