2012-05-05 3 views
0

Я пытался получить доступ к данным с другого сайта с помощью ajax, но не смог. Сценарий: если я отправляю данные на сайт по форме, то я перенаправляюсь на сайт и отображает правильные данные. Я хочу, чтобы мой скрипт извлекал эти данные с помощью ajax. Одна вещь, которую я хочу, чтобы очистить, что я не могу изменить скрипт на стороне сервера, чтобы я мог добавить заголовок Access-Control-Allow-Origin.Ajax POST, возвращающий пустую строку

Это их трюк или взломать, чтобы получить данные ???

$(document).ready(function(){ 
       $.ajax({ 
        type: 'POST', 
        url: 'http://somedomain.com/FlightStatus.aspx', 
        data: {ArrFltStatus:'KDU',DepFltStatus:'ISB',DropDownDay:'today',Submit:'Proceed'}, 
        success: function(data){ 
         alert(data); 
        }, 
        error:function(xhr,err){ 
         alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
         alert("responseText: "+xhr.responseText); 
        } 
       }); 
      }); 
+2

В качестве меры предосторожности перекрестные запросы происхождения заблокированы http://en.wikipedia.org/wiki/Cross-origin_resource_sharing – Rafay

ответ

2

Если у них есть интерфейс JSONp, используйте его (это не будет работать с POST, хотя).

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

+0

, но он принимает метод отправки –

+1

Does'nt независимо от того, что он принимает, он блокируется браузером как мера безопасности. Разрешен только JSONP, а JSONP поддерживает только запросы GET. – adeneo

0

При запросе ресурсов кросс-домена вы должны использовать атрибут dataType: 'jsonp' в своих параметрах ajax.

+0

Полный пример пожалуйста! –

+0

$ .ajax ({url: "http://foo.com/bar", dataType: 'jsonp' ...} –

+0

и тип ??? POST или GET? –

0

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

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

+0

мои файлы уже находятся на удаленном сервере. Не на localhost –

+0

нормально, поэтому удаленный сервер такой же от который вы пытаетесь удалить данные с помощью ajax? –

0

Перекрестные запросы домена могут выполняться только с помощью JSONP, а JSONP поддерживает только GET и $ .ajax по умолчанию GET, поэтому нет необходимости устанавливать тип вообще:

$.ajax({ 
    url: 'http://somedomain.com/FlightStatus.aspx', 
    data: {ArrFltStatus:'KDU',DepFltStatus:'ISB',DropDownDay:'today',Submit:'Proceed'}, 
    dataType : 'jsonp', 
}).done(function(data) { 
    alert(data); 
}); 

Обработчик ошибок не запускается с JSONP, поэтому не нужно также использовать это.

Если служба, запрашивающая данные, не поддерживает JSONP, вы можете использовать YQL Yahoo, чтобы настроить канал, который позволит вам получать данные в формате JSONP.

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