首页 > ajax能跨域post吗?

ajax能跨域post吗?

因为目前的项目需要ajax跨域向另一台服务器传大量值,目前跨域ajax也只有$.getJSON的形式,GET貌似不能满足传大量数据的要求,想问一下牛人怎样ajax跨域post


能,不过如果 post 的是非表单类型的内容的话,需要进行「preflighted requests」,有点麻烦。详见 MDN: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS


首先你的另外一台服务器需要做好CORS设置, 然后你的JS代码如下

$.ajax({
    url: a_cross_domain_url,
    crossDomain: true,
    method: "POST"
});

通过 CORS 可以跨域。比如 a.com 想 post 到 b.com 下,那么你需要在 b.com 的服务器上进行 CORS 设置,允许 a.com 跨域请求。手机码字困难,所以 CORS 具体内容请自行谷歌。


是的,仅仅POST数据的话,form表单本来就支持跨域。
不过最新的 XMLHttpRequest2.0 有非常大的改进,其中之一就是对于跨域 ajax 的处理。


跨域ajax浏览器的兼容性不好解决

jsonp只能GET

跨域POST从来都是可以的
构造<form>表单想action给谁都可以

跨域POST,并且想得到返回结果,需要对方服务器做一些配合

思路:
== a.com/post.html ==

<script>
function postcallback(data){
}
</script>
<form action="http://b.com/api.php" method="post" target="ifr-result"><input ....></form>
<iframe name="ifr-result"></iframe>

== a.com/ifr-callback.php ==

<?php
header('Content-type: text/javascript');
echo '<script>';
//回调原页面上函数处理返回结果
echo 'window.top.postcallback(' .$_GET['data']. ');';
echo '</script>';

== b.com/api.php ==

<?php
//....
$data = '{"ret":0,"msg":"ok"}';
// ** 让结果跳转到a.com域 **
header("Location: http://a.com/ifr-callback.php?data=".urlencode($data));

easyXDM是不是可以实现?http://easyxdm.net/wp/
easyXDM is a Javascript library that enables you as a developer to easily work around the limitation set in place by the Same Origin Policy, in turn making it easy to communicate and expose javascript API’s across domain boundaries.


都别闹了。

用Apache做转发(逆向代理),让跨域变成同域,这才是最好的解决方案。

原因:
1.如果不做转发,服务端与客户端js都需要改动代码,专门为跨域写很多额外的代码,增大工作量。而且不跨域时,这些代码根本就用不着。做了转发,服务端与客户端,都不需要做任何改动。

2.做转发,开发时,可以让客户端js直接访问VS、Eclipse,来调试,很方便。部署后,把转发切到IIS或Tomcat上去,做切换只是几秒钟的事情。

3.转发非常容易做,在Win上装一个wamp,然后花几分钟配置一下Apache,转发就做好了。如果不做转发,服务端与客户端要改动大量代码,太费时。


跨域POST?其实不是很懂这个术语就是,一般表单POST什么的不就可以向非同域名的地址做POST么?如果不要返回值的话用AJAX做POST也没问题吧。

【热门文章】
【热门文章】