日期:2014-05-16  浏览次数:20427 次

js跨域post提交大量数量,如何实现。
做了一个评论系统,原则上只调用一段js就显示出完整的评论模块,但提交数据时遇到了跨库的问题。http://www.jicheke.com/a_test.html,这个多说评论系统。它是能实现的,请在大侠指点。

------解决方案--------------------
如果你的提交地址B和调用地址A处于一个顶级域下,可以这样解决。
在B域下创建一个供别的页面iframe调用的页面,这里面可以只有JS函数供引用页面(父页面)调用。然后在调用页面和被调用页面都写一段JS代码(建议写在最开始处):document.domain = "顶级域名";
之后在调用页面就可以操作iframe了(可以给iframe一个ID),ID.函数(数据);然后在函数处理中使用AJAX-POST数据到B页面所在的域。

如果不在一个顶级域下,只能把所有需要操作显示的部分都弄到一个iframe里面在别处引用。
------解决方案--------------------
自己做代理就行了,将你的信息提交到代理页面,然后代理页面负责post数据到跨域的页面
------解决方案--------------------
数据量多大?太大了,干脆存一个xml文件,然后给url,让对面访问这个xml文件好了
------解决方案--------------------
直接js不行,需要借助iframe。。

function xssPost(url,arg,postStr){
  var de;
  de=document.body.appendChild(document.createElement('iframe'));
  de.src='about:blank';
  de.contentDocument.write('<form method="POST" action="'+url+'"><textarea name="'+arg+'">'+postStr+'</textarea></form>');
  de.contentDocument.forms[0].submit();
}
//xssPost('http://xxx.xxx.xxx/a.php','val','xxxxxxxxx');
//相当于提交http://xxx.xxx.xxx/a.php?val=xxxxxxxxx,只不过是POST访问的
------解决方案--------------------
引用:
Quote: 引用:

自己做代理就行了,将你的信息提交到代理页面,然后代理页面负责post数据到跨域的页面

如果访问代理的域名那我的需求就实现了

如果www.a.com要使用我的评论系统,那么我只要给它一段js代码放在www.a.com页面里就行了。
js代码:

<div id="ps_comment"></div>
<script type="text/javascript">
var comment_conf = {app_id:"1212"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = 'http://www.ping.com/api/comment.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0] 

------解决方案--------------------
 document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>