【问题标题】:No response from a jQuery Ajax request to a PHP WebservicejQuery Ajax 请求对 PHP Web 服务没有响应
【发布时间】:2011-07-22 17:58:02
【问题描述】:

我对一个应用程序有一点问题,具体如下:

我需要通过邮寄方式向信用卡支付网络服务发送一些数据,因此网络服务将处理这些信息并返回一个 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/...')),然后响应工作正常,否则在 web 服务(https://comercio.locaweb.com.br...)中没有响应,我正在等待的 XML 甚至不存在。

有人知道发生了什么吗? 或者如果我做错了,有人能告诉我一个更好的方法来通过 Post 获取 XML 发送数据吗?

谢谢。

【问题讨论】:

  • 您是否使用 fiddler 或类似应用程序验证没有响应?在我看来,通过查询字符串将 xml 发送到另一个页面听起来不是世界上最聪明的主意,但也许我错了。
  • 你是对的。这不是一个好主意。

标签: php jquery ajax web-services ajax-request


【解决方案1】:

维尼修斯,

您似乎正在尝试使用 ajax 与在另一个域上运行的 Web 服务进行交互?浏览器不允许这样做,因为它们在发出 ajax 请求时遵循Same Origin Policy

有很多方法可以解决这个限制。其中之一是在您的 PHP 站点上托管一个代理,该代理会为您执行 Web 请求。然后,您的代码可以向您托管的页面发出请求(这是同源策略允许的),但您仍然可以调用您需要的此服务。 on this page 对此限制有更详细的描述,其中甚至包括 sample PHP code for this proxy page.

还有一个名为 easyXDM 的 JavaScript 库(在上面的 Wikipedia 文章中提到)。该库将根据用户的浏览器确定用于执行此跨站点通信的最佳方法。有关此项目的更多信息,请访问here。我不确定easyXDM在野外的使用有多广泛,但我发现它确实需要在IE6-7之前在用户的计算机上安装flash。这意味着您网站的任何 IE 6-7 用户都必须安装 flash 才能使用此支付服务(可能会让人头疼)。

我个人不太喜欢像这样添加依赖用户依赖项,除非我必须这样做,所以我会尝试实现代理解决方案。

【讨论】:

    【解决方案2】:

    David Ipsen 指出了同源政策。

    要解决这个问题,您可以在您的域上创建一个 php 文件,该文件将卷曲到您想要的 web 服务,并更改您的 $post() 函数以通过 ajax 调用服务器上的 php 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2020-08-19
      相关资源
      最近更新 更多