Нет ответа от запроса jQuery Ajax к веб-сервису PHP - PullRequest
0 голосов
/ 22 июля 2011

У меня небольшая проблема с приложением, в котором указано следующее:

Мне нужно отправить в веб-службу оплаты кредитной картой некоторые данные по почте, чтобы веб-служба обработала информацию и вернула XML.

Я думал, что смогу сделать это с помощью метода $.post() jQuery Ajax.Вот мой код:

$.post("https://comercio.locaweb.com.br/comercio.comp", { 
identificacao: dadosPagamento[0], 
modulo: dadosPagamento[1], 
operacao: dadosPagamento[2], 
ambiente: dadosPagamento[3], 
bin: dadosPagamento[4], 
idioma: dadosPagamento[5], 
valor: dadosPagamento[6], 
pedido: dadosPagamento[7], 
descricao: dadosPagamento[8], 
bandeira: dadosPagamento[9], 
forma_pagamento: dadosPagamento[10], 
parcelas: dadosPagamento[11], 
autorizar: dadosPagamento[12], 
capturar: dadosPagamento[13] 
},
function(data) {
alert(data);
window.open('../negocio/index.php?mod=cliente&acao=gambs&xml=' + encodeURI(data));
$('#resultadoFinal').html(data);
}
);

Предупреждение (данные), которое я использую только для проверки ответа, и проблема в следующем: я отправляю его в локальный тестовый файл (@ window.open('../negocio/...')), а затем в ответработает нормально, в противном случае в веб-сервисе (https://comercio.locaweb.com.br...) нет ответа, а ожидаемый мной XML даже не существует.

Кто-нибудь знает, что происходит?Или, если я делаю это неправильно, может кто-нибудь сказать мне лучший способ получить данные отправки XML по почте?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 22 июля 2011

Виниций

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

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

Существует также библиотека JavaScript, называемая easyXDM (которая упоминается в статье Википедии выше). Эта библиотека определит лучший метод для использования этой межсайтовой связи на основе браузера пользователя. Более подробная информация по этому проекту доступна здесь . Я не уверен, насколько широко используется easyXDM, но я вижу, что для этого требуется, чтобы на компьютере пользователя была установлена ​​флэш-память до IE6-7. Это означает, что можно ожидать, что любой пользователь IE 6-7 на вашем сайте должен иметь установленную флэш-память для использования этой платежной услуги (это может быть потенциальной головной болью).

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

1 голос
/ 23 июля 2011

Дэвид Ипсен указал на ту же политику происхождения.

Чтобы обойти это, вы можете создать php-файл на своем домене, который будет свернут в нужную вам веб-службу, и изменить функцию $ post () для вызова php-файла на вашем сервере через ajax.

...