javascript - ajax能跨域post吗?
大家讲道理
大家讲道理 2017-04-10 13:09:44
0
8
712

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(8)
伊谢尔伦

跨域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));
刘奇

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

伊谢尔伦

跨域POST?其实不是很懂这个术语就是,一般表单POST什么的不就可以向非同域名的地址做POST么?如果不要返回值的话用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"
});
迷茫

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.

Peter_Zhu

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

黄舟

都别闹了。

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

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板