как получить ответ от запроса jQuery.get - PullRequest
0 голосов
/ 03 июня 2010

У меня есть страница, которая использует следующее для отправки запроса AJAX:

function oc()
{
  jQuery.get(
    "http://somewhere.com:5001/ajax/options/",
    jQuery('#selectform').serialize(),
    function(data,statusm,xml){
      // I got nothing!!!
      return;
    }
  );
}

Если я сделаю запрос руководства из адресной строки, все работает. И когда я делаю запрос от JS, я вижу по журналу, что серверная часть работает правильно, но при обратном вызове я не могу получить содержимое ответа.

Что я не так делаю?

Ответы [ 2 ]

3 голосов
/ 03 июня 2010

Вероятно, вы увидите политику одного и того же происхождения . Это функция безопасности браузера, которая предотвращает атаки межсайтовых сценариев и обеспечивает доступ даже к одному домену / хосту другой порт считается находящимся в «другом домене», если следовать политике. Пример таблицы в Википедии отлично показывает, что разрешено / запрещено.

Вы можете дополнительно проверить это с помощью переключателя командной строки --disable-web-security в Chrome, тогда ваш скрипт должен работать ... это не решение, просто помогает подтвердить проблему.

Короче говоря, вам нужно отправлять запросы на один и тот же домен или хост и порт, иначе он будет заблокирован. Исключением из этого правила является использование JSONP , которое используется в основном для этой цели. Вы можете найти несколько приличных примеров здесь и здесь .

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

Попробуйте использовать функцию ошибки с $ .ajax.

$.ajax({
  url: "http://somewhere.com:5001/ajax/options/",
  data: jQuery('#selectform').serialize(),
  success: function(data,statusm,xml){
  // I got nothing!!!
  return;
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    // do something
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...