JQuery JSON функция, возвращающая ноль - PullRequest
0 голосов
/ 14 июня 2010

У меня есть скрипт jquery, как показано ниже:

$.ajax({
   type: "GET",
   url: "http://www.site.com/v4/ajax/get_song_info.php",
   data: ({id : song_id }),
   dataType: "json",
   success: function(data)
   {
      alert( "Data: " + data );
   }
 });

И связанная страница php:

<?php

    include_once '../connect.php';

    $song_id = $_GET['id'];

    $query = mysql_query("SELECT * FROM songs WHERE id = '$song_id' LIMIT 1");

    $song = mysql_fetch_row($query);

    $song_info = array( htmlentities($song[3]) , htmlentities($song[4]) );

    header('Content-Type: application/json');
    echo json_encode($song_info); 
?>

php возвращает что-то вроде этого, когда я вызываю его самостоятельно вбраузер: ["Peaches","I Feel Cream (Proxy Remix)"]

Однако, когда я делаю вызов jQuery, мое предупреждение показывает «Данные: ноль»

1 Ответ

1 голос
/ 14 июня 2010

Я заметил, что вы использовали абсолютный URL, а не относительный.Если ваша страница также не обслуживается с http://www.site.com, вы используете Политика аналогичного происхождения .SOP - это механизм безопасности, реализованный браузерами.

У вас есть несколько вариантов для обхода этого.Если вы контролируете сервер и вам не нужна поддержка IE6 или IE7, вы можете реализовать Cross-Origin Resource Sharing .В большинстве современных браузеров, если на сервере включена поддержка CORS, ваши ajax-вызовы просто начнут работать (браузер обрабатывает его под прикрытием).IE6 и IE7 не поддерживают CORS, а IE8 требует, чтобы код на стороне клиента делал что-то особенное.

Другой вариант - JSONP , который использует тот факт, чточто, хотя вы не можете сделать ajax-вызов из разных источников (если у вас нет CORS), вполне нормально, что страница загружает скрипт с удаленного хоста.Таким образом, вы загружаете скрипт, который включает в себя данные и который перезванивает вам, чтобы сообщить, что он там.Преимущество JSONP в том, что он работает со всеми основными браузерами прямо сейчас.И jQuery имеет поддержку JSONP, встроенную в его вызов ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...