Что нужно изменить на стороне клиента или на стороне сервера, чтобы заставить getJSON () работать? - PullRequest
1 голос
/ 18 апреля 2011

Я работаю с некоторыми веб-сервисами, которые уже были созданы, и мне нужно вызывать их с помощью ajax. Сайт, над которым я работаю, размещен в домене, отличном от домена веб-служб. Теперь я знаю о проблемах, которые это вызывает с политикой того же происхождения.

Я пытаюсь обойти это, используя JSON, основываясь на статьях:

API JQuery

IBM на междоменных связях

и множество других вопросов здесь.

Я попробовал следующий код (заменил реальный домен на «webservice»):

    <script type="text/javascript">
          $(document).ready(function(){
        $.getJSON("http://webservice/restserver.aspx?",
        {
            method: "userInfo",
            userID: "039304303930302",
            sessionID: "STRING",
                format: "json"

        },
         function(data) {
                alert("GET Returned");
        });

});
</script>

1) Что-то ужасно не так с этим, так как я новичок в JSON и AJAX

2) Должен ли веб-сервис иметь обратный вызов, например, "& callback =?" добавил к этому

3) Есть ли другой способ обойти междоменные вызовы

Любые предложения или помощь будут приветствоваться, так как я работаю над этим целую вечность.

Спасибо!

1 Ответ

2 голосов
/ 18 апреля 2011

Вам нужен JSONP, который отличается от JSON.Вам нужно изменить метод веб-службы, чтобы он мог принимать дополнительный аргумент (например, callback=foo) и обернуть ответ JSON в эту функцию:

foo({ first_name: 'john', last_name: 'smith' })

Также для реализации междоменных вызовов AJAX jQueryиспользует скрытый тег <script>, поэтому веб-сервис должен быть настроен на прием GET-запросов.

Документация по методу $.getJSON() содержит пример использования Flickr, который вы можете попробовать запустить и просмотретьточный запрос / ответ с FireBug.Вы можете увидеть это в действии здесь .

...