代替jquery $.post 跨域提交数据的N种形式

跨域的N种形式:

1.直接用jquery中$.getJSON进行跨域提交

优点:有返回值,可直接跨域;

缺点:数据量小;

提交方式:仅get (无$.postJSON)

    $.getJSON("http://www.sendnet.cn/?callback=?" , { UserId: 1001 },
    function (data) {
         alert(data.info);
    });
    $.ajax({
                 type: "Get",
                 url: "http://www.sendnet.cn/?UserId=1001",
                 cache: false,
                 error: function () { },
                 jsonp: "callback",
                 dataType: "jsonp",
                 success: function (result) {
                     alert(result.info);
                 }
             });

2.在页面中嵌入一个iframe,把iframe的宽和高设置为0进行跨域提交

优点:可直接跨域;

缺点:无返回值(脱离ajax本质);

提交方式:get/post

使用隐藏的iframe来提交表单
1,在页面中嵌入一个iframe,把iframe的宽和高设置为0
2.在iframe的里面里设置一个from的表单,表单的内容就是真正要提交的表单内容。
3.当点击按钮的时候是iframe里的表单提交。

<form id="form2" name="form2" method="post" action="a,jsp" enctype="multipart/form-data">
  <input name="option_13412" id="option_13412" type="text"/>
  <input name="option_13413" id="option_13413" type="text"/>
  <input name="option_13414" id="option_13414" type="text"/>
  <input name="option_13415" id="option_13415" type="text"/>
</form>

使用jquery来啊操作iframe中的表单元素
$(window.frames["iframe1"].document).find("#option_13412").val(name);
$(window.frames["iframe1"].document).find("#option_13413").val(phone);
$(window.frames["iframe1"].document).find("#option_13415").val(content);

通过按钮来提交iframe里的表单
$(window.frames["iframe1"].document).find("#form2").submit();

3.直接用$.post跨域,先提交到本地域名下一个代理程序,通过代理程序向目的域名进行post或get提交,并根据目的域名的返回值通过代理 程序返回给本地页面

优点:有返回值,可直接跨域,可通过 代理程序 统计ip等用户信息,增加安全性;

提交方式:get/post

复杂度:需要前端工程师和后端工程师配合(php/java../工程师)

缺点:需要消耗本地服务器资源,增加ajax等待时间(可忽略)

4.向百度学习的思路:由于调用任何js文件不涉及跨域问题,所以js脚本中可以编写调用远程服务器上的js文件,该文件实现你需要的业务。

即a.js动态调用www.baidu.com/b.js ,其中b.js实现业务

5.待研究…………

时间: 2024-10-16 15:22:03

代替jquery $.post 跨域提交数据的N种形式的相关文章

JavaScript跨域提交数据

1.通过jsonp跨域    场景:假设前台有JS方法"crossJS", 1.1发送请求http://www.xxx.com/?callback=crossJS.(创建一个script标签,请求该地址) 1.2后台服务器,返回数据格如crossJS({"a":"b"}); 优点:开发.维护简单 缺点:每次可提交数据大小受get方式限制 2.使用HTML5中新引进的window.postMessage方法来跨域传送数据   场景: 页面http:

js跨域请求数据的3种常用的方法

由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求.那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理:1.JavaScript   在原生js(没有jQuery和ajax支持)的情况下,通常客户端代码是这样的(我假设是在localhost:8080的端口下的http://localhost:8080/webs/i.mediapower.mobi/wutao/index.html页面的body标签下面加入以下代码): <script

谈谈跨域请求数据的几种常用的方法

由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求. 那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理: 1.JavaScript 在原生js(没有jQuery和ajax支持)的情况下,通常客户端代码是这样的(我假设是在localhost:8080的端口下的http://localhost:8080/webs/i.mediapower.mobi/wutao/index.html页面的body标签下面加入以下代码): <script

ajax 跨域提交数据

$.ajax({ url:"http://my.demo.com/jsonp/server.php",//不同域的文件; cache: false, //是否使用缓存; error: function () { }, //错误时执行的方法; jsonp: "callback", //跨域必填参数,回调函数名,对应服务器文件中$_GET['callback']; dataType: "jsonp", // 跨域必填参数,声明jsonp 传输; su

html Js跨域提交数据

MVC实现方式: [ActionAllowOrigin][HttpPost]public JsonResult Cooperation() { return json(); } 在方法前面加上[ActionAllowOrigin] 这个方法是自定义的继承自AuthorizeAttribute public class ActionAllowOriginAttribute : AuthorizeAttribute { public override void OnAuthorization(Sys

jQuery中通过JSONP来跨域获取数据的三种方式

第一种方法是在ajax函数中设置dataType为'jsonp' $.ajax({ dataType: 'jsonp', url: 'http://www.a.com/user?id=123', success: function(data){ //处理data数据 } }); 第二种方法是利用getJSON来实现,只要在地址中加上callback=?参数即可 $.getJSON('http://www.a.com/user?id=123&callback=?', function(data){

CORS 跨域 node |XMLHttpRequest 跨域提交数据 node

node服务端 app.post('/getdata',function(req,res,next){ req.setEncoding('utf8'); res.setHeader('Access-Control-Allow-Origin','*') req.on('data',function(str){ var json = JSON.parse(str||"{}") ; console.log(json) }) res.end('already get data') }) scr

使用jQuery实现跨域提交表单数据

我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据. 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务器端应当在JSON数据前加上回调函数名,以便

妥善的ajax跨域提交post请求的解决方案,结合PHP与jquery

开发背景: 在开发中采用了一个新的架构,将大部分客户的留言功能集成到一个公共API提交保存,采用不同的用户名区分,供客户查询自己网站的留言,这样节约了客户网站的资源,也提升了维护性. 那么在提交时不能采用直接的post提交,否则会产生跳转,使访客混乱,所以采用ajax提交留言内容至公共服务器:http://wx.igooda.cn/index.php/messagesave,但尝试后发现不能提交post请求,百度后查询结果是跨域只能是get请求,这对留言内容多的来说,是不可行的.还有一种解决方案