【发布时间】:2010-01-21 17:32:00
【问题描述】:
我正在尝试从我的应用所在的许多不同服务器向我的服务器发送大块数据。
使用一些虚拟图像源,将我的数据作为 GET 查询传递。 (img.gif?aaa=xxx&bb=yyy...)
Query 多次太长并被剪切。
有没有更好的方法让我跨浏览器发送数据?
【问题讨论】:
标签: javascript ajax cross-domain
我正在尝试从我的应用所在的许多不同服务器向我的服务器发送大块数据。
使用一些虚拟图像源,将我的数据作为 GET 查询传递。 (img.gif?aaa=xxx&bb=yyy...)
Query 多次太长并被剪切。
有没有更好的方法让我跨浏览器发送数据?
【问题讨论】:
标签: javascript ajax cross-domain
发送数据时最好使用 POST 方法。
var msgSender = new ActiveXObject("Microsoft.XMLHTTP");
msgSender.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
msgSender.setRequestHeader("Encoding", "Windows-1257")
msgSender.open("POST", "http://yourderver/page" ,true);
msgSender.onreadystatechange = function(){...};
var msg = "your very long message goes here";
//preparing post data
var strToSend = "someotherarg=somevalue" + username;
strToSend+= "&msg=" + msg;
strToSend = escape(strToSend);
msgSender.send(strToSend);
如果您使用 jQuery,解决方案会更简单 - 只需调用 $.post() 方法:http://docs.jquery.com/Ajax/jQuery.post
编辑: 但是,这不会跨域工作,除非您在服务器上指定 'Access-Control' 标头并且客户端具有现代 enouhg 浏览器(FireFox 3.5+ 等)
因此,另一种解决方案是在您的页面中包含一个隐藏的 IFRAME(该页面位于您的服务器上),其中包含一个表单,然后您调用该表单的 Submit() 来发布数据。
【讨论】:
document.getElementById("yourframe").document.forms[0].submit() 等等!
拆分您的有效负载(例如 1024 字节),然后使用多个 GET 请求发送。
【讨论】: