Возникли проблемы с XMLHTTPRequest.send () в Safari, Chrome и Firefox - PullRequest
2 голосов
/ 03 февраля 2011

У меня есть некоторый код JavaScript, который сделает запрос к API.И запрос выплевывает xml в качестве ответа.Я использую XMLHTTPRequest для получения xml.

В Firebug я замечаю, что он просто не работает и выдает исключение.Я не совсем уверен, что происходит.Вот демонстрация в Firebug, которую вы заметите в окне консоли:

Вот код, который я запускаю,

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", configgg, false );
xmlHttp.send()

Когда я искал подсказки в Интернете о том, что происходит,была тема о проблемах, когда запрос материала из другого домена не работал и проблема была на стороне сервера.Если это так, как бы я включил это (разрешив другим доменам делать xmlhttprequests)?API находится на одном из наших серверов, но мы выполняем тесты запросов из других доменов, чтобы заставить его работать.

Ответы [ 5 ]

1 голос
/ 03 февраля 2011

Как указано в других ответах, причиной сбоя скрипта является тот факт, что вы пытаетесь получить доступ к чему-то из другого домена.

Чтобы это исправить, вы можете обойти ограничение javascript, загрузив локальный скрипт PHPэто эхо-содержимое URL API.

1 голос
/ 03 февраля 2011

Ответ, который понравится всем здесь, будет включать в себя Политику единого происхождения, которая запрещает междоменные звонки.Но я прошел через нечто подобное, и я знаю, что это не тот ответ, который вы ищете.

Я знаю, как сделать это в Internet Explorer, используя объект MSXML ServerXMLHTTP, но насколько это возможно в другихбраузеры, попробуйте сделать это:

xmlHttp = new XMLHttpRequest();  
xmlHttp.open( "GET", configgg, false );  
xmlHttp.setRequestHeader("Host", configgg);
xmlHttp.send();
1 голос
/ 03 февраля 2011

Same_origin_policy не позволяет совершать звонки через домен. Вы можете посмотреть CORS , когда работаете с новыми браузерами, или вам нужно использовать прокси, или вам нужно начать использовать JSONP .

Настройка безопасности браузера, чтобы разрешать междоменные вызовы, вызывает проблемы, если пользователь путешествует с ней по сети.

0 голосов
/ 08 декабря 2015
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('GET','baselead.xml',false);
    xmlhttp.setRequestHeader('Content-Type', 'text/xml');
    xmlhttp.send('');

Вы должны использовать 'baselead.xml' qoute (''), он работает для меня в Chrome

0 голосов
/ 03 февраля 2011

Я думаю, что причина его неудачи в том, что когда вы используете метод send, но не включаете никаких аргументов, вы должны сообщить ему null, вот так:

xmlHttp.send(null);

Это происходит и с некоторыми другими методами (getComputedStyle также не работает, если вы не включили null в качестве второго аргумента).

...