2012-09-02 72 views
0

我Intranet上的几台服务器。我从一台服务器传递数据以在另一台服务器上处理。尝试使用ajax,但我是一个noob。Ajax表单提交跨服务器

<script type="text/javascript" src="jquery-1.8.0.js"></script> 
<script type="text/javascript"> 
function print(oForm){ 

var toggle = oForm.elements["toggle"].value; 
var ticket_type_id = oForm.elements["ticket_type_id"].value; 
var printer_id = oForm.elements["printer_id"].value; 
var store_id = oForm.elements["store_id"].value; 
var data = oForm.elements["data"].value; 

var dataString = "toggle="+ toggle+ "&ticket_type_id="+ ticket_type_id+ "&printer_id="+ printer_id+ "&store_id="+ store_id+ "&data="+ data; 
$.ajax(
{ 
type:"POST", 
url:"http://192.168.12.103/crowncontrol/backend/processes/print.php", 
data:dataString, 
success: function(data){ 
alert("successful"); 
} 
} 
); 
} 
</script> 

上述URL不起作用。 但是,如果我做的网址:

"../../../backend/processes/print.php" 

这是相同的位置,它工作正常。 另外,如果我通过锚把它找它工作正常:

href="http://192.168.12.103/crowncontrol/backend/processes/print.php?etc" 

我使用AJAX的原因是,我希望我的print.php脚本与出用户注意到运行。我无法使用url的原因:“../../../ backend/processes/print.php”是因为我将从一台服务器发送信息到我的Intranet上的另一台服务器。

任何帮助,将不胜感激。我花了很长时间试图让它独立工作。从答案的下面,而不是我用了整个Ajax代码

AFTER帮助:

$.getJSON('http://192.168.12.103/crowncontrol/backend/processes/print.php?callback=?',dataString,function(res){ 
    //alert('Success'); 
}); 

也:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"> 

回答

0

这是same origin policy的结果。出于安全原因,您无法执行正常的AJAX请求跨域请求(请参阅关于相同来源策略的链接)。

幸运的是jQuery的包括使用脚本标记注入,而不是XMLHttpRequest的JSONP请求支援。

不是创建和使用XHR对象(XMLHttpRequest的是Ajax如何做),它创建与设置您的URL的src属性的脚本标签。它应该工作。

试着改变你的代码:

$.ajax(
{ 
type:"POST", 
url:"http://192.168.12.103/crowncontrol/backend/processes/print.php?callback=?", 
data:dataString, 
success: function(data){ 
alert("successful"); 
} 
} 
); 

(?注意回调=部分)

这里是一个jsonp tutorial for jQuery

下面是一些有关jsonp和有关same origin policy的一些信息要解决这个问题

+0

谢谢!我的原始代码没有太多运气。但是你把我推向了正确的方向。结束使用:$ .getJSON('http://------/crowncontrol/backend/processes/print.php?callback =?',dataString,function(res){alert('success' ); }); – dBaker

0

简单的方法是让一个脚本文件在您的服务器和TH通过该服务器请求路由请求。

使用下面这样的逻辑:

  1. 直接使得AJAX请求跨域代替,使AJAX请求到一个新的脚本您的服务器上。
  2. 在该脚本文件,获得请求并作出所需的呼叫(到跨域地址)。
  3. 然后收到从交叉域服务器的响应,并将其发送到客户端。
  4. 从需要数据的自己的服务器接收结果。

此图显示:

enter image description here