Ошибка JavaScript при попытке запустить простой XMLHttpRequest (GET) - PullRequest
1 голос
/ 09 августа 2010

Немного новичка в JavaScript здесь -

Я запускаю этот базовый код JavaScript с моего сайта в качестве теста:

var req = new XMLHttpRequest();
req.open('GET', 'http://www.google.co.uk/', false);
req.send();
if (req.status == 200) {
    alert(req.responseText);
}

и продолжаю получать следующую ошибку:

[Exception ... "Компонент возвратил код ошибки: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" расположение: "кадр JS :: http://localhost/testEx3/Default.aspx:: SendRequest :: line 402 "data: no]

Кто-нибудь знает, что я здесь не так делаю?

ОБНОВЛЕНИЕ:

ОК - так что я на самом деле пытаюсь сделать это POST-запрос к веб-сервису, который я опубликовал на своем локальном компьютере разработчика - я получил ту же ошибку, что и выше - поэтому я привел этот пример для простоты.Теперь кажется, что в игру вступила «Политика одинакового происхождения» - поэтому я опубликовал веб-сервис с начальной частью URI как http://localhost/ вместо http://tempuri.org/.

Теперь я получаю 500ошибка.Что-то мне не хватает в заголовках?

var request = new XMLHttpRequest();
request.open("POST", "http://localhost/ApplicationServices.asmx?op=AddressSearch", false, "", "");
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");

request.send(x, y, buffer);

if (request.status == 200) {
    alert("Success");
}
else {
    alert("Failure: " + request.status);
}

Ответы [ 2 ]

4 голосов
/ 09 августа 2010

Похоже, вы пытаетесь отправить запрос, который нарушил бы ту же политику происхождения .

По сути, с точки зрения запросов AJAX, вы ограничены отправкой запросов в тот же домен, что и страница, отправляющая этот запрос.Например:

Вы пытаетесь сделать № 3 выше.

Если вам нужно отправить междоменный запрос, вы можете использовать JSONP или что-то вроде flensend / flxhr .

1 голос
/ 09 августа 2010

Если вы не работаете в Google, это не сработает. Вы не можете получить информацию из другого домена через XMLHttpRequest. Это называется «та же политика происхождения».

изменить & mdash; Если вы получаете ошибку 500 с вашего локального сервера, это означает, что ваш HTTP-запрос отправляется на сервер, а некоторый код на сервере не выполняется. Проверьте журналы вашего сервера.

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