2010-08-09 2 views
1

Бит новичка JavaScript здесь -ошибка JavaScript при попытке выстрелить простой XMLHttpRequest (GET)

Я стреляя этот основной фрагмент кода JavaScript на моем сайте в качестве теста:

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

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

[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost/testEx3/Default.aspx :: SendRequest :: line 402" data: no]

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

UPDATE:

OK - так что я Actaully пытаюсь сделать, это запрос POST к веб-службе я опубликовал на моем локальном Dev машине - я получал ту же ошибку, что и выше - вот почему Я привел этот пример для простоты. Теперь появляется «политика одинакового происхождения», и теперь я опубликовал веб-сервис с начальной частью 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); 
} 
+0

Удален тег с одинаковым исходным кодом, поскольку он больше не воспроизводится. – ajm

ответ

1

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

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

+0

ОК - ну, на самом деле, я действительно пытаюсь выполнить POST-запрос на веб-службу Im hosting локально - и он по-прежнему дает ту же ошибку. Я просто подумал, что я бы поместил URL-адрес google, чтобы упростить мой вопрос - я понятия не имел об этой «той же политике». Конечно, не может быть так сложно получить доступ к вашему собственному веб-серввице. – Vidar

+0

OK см. Мое редактирование. – Pointy

4

Похоже, вы пытаетесь отправить запрос, который нарушит same origin policy.

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

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

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

+0

У меня есть sneeky чувство, что это массовый перебор для меня - поскольку все, что я пытаюсь сделать, это простой запрос POST на веб-сервис, который я опубликовал на своей локальной машине. Есть ли более простой способ? BTW - Я все еще получаю ту же ошибку с запросом POST. – Vidar