2011-02-03 5 views
2

У меня есть код javascript, который сделает запрос на api. И запрос выплескивает xml в качестве ответа. Я использую XMLHTTPRequest для получения xml.Имея некоторые проблемы с XMLHTTPRequest.send() в Safari, Chrome и Firefox

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

Вот код, я бегу,

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

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

+0

Если вы используете Google Chrome для отладки вы бы видели эту ошибку: XMLHttpRequest не может загрузить HTTP://api.internetvideoarchive.com/Video/TitleSearch.aspx?DeveloperId=a92e6bd5-f9d0-4e03-91c4-3019c5614da4&OutputFormat=1&SearchTerm=Jaws. Происхождение http://elvis.rowan.edu не разрешено Access-Control-Allow-Origin. – gnur

+0

@gnur есть способ разрешить доступ всем доменам? – Bombcode

ответ

1

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

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

+0

Локальный php-скрипт на elvis.rowan.edu? Если да, есть ли другой способ, я знаю, что Flash использует crossdomain.xml, имеет ли Javascript что-то подобное? – Bombcode

+0

Оказалось, что мы будем размещать файл, а работа php работала и помогала с тестовым тестом. Благодаря! – Bombcode

+0

Добро пожаловать! – gnur

1

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

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

+0

Браузеры, с которыми я планирую работать, - это все готовые браузеры HTML5. Поэтому, надеюсь, они должны быть достаточно новыми. Я посмотрю на CORS. – Bombcode

1

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

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

xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("GET", configgg, false); 
xmlHttp.setRequestHeader("Host", configgg); 
xmlHttp.send(); 
+0

Спасибо @ user535617, но не повезло в Chrome и Firefox – Bombcode

0

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

xmlHttp.send(null); 

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

+0

send() не требует никаких параметров. В большинстве браузеров он работает без нулевого значения, так что здесь проблема не в этом. – gnur

+0

[Что вы курите?] (Http://i56.tinypic.com/969vnp.png) – epascarello

0
var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open('GET','baselead.xml',false); 
    xmlhttp.setRequestHeader('Content-Type', 'text/xml'); 
    xmlhttp.send(''); 

вы должны использовать qoute «baselead.xml» («») он работает для меня в хроме

Смежные вопросы