jquery实现跨域提交(原创)
jquery实现跨域提交(原创)
我们在运营一个产品的时候往往会遇到这样那样的表单提交,如客户数据收集、申请加盟、意见反馈等,由此我们开发了这样一个产品,可以理解为万能型数据收集平台,不难想到,我们在前端会遇到跨域的问题,比如 www.a.com 需要提交数据到www.app.com,以前我们用服务端代理来解决跨域问题,上次遇到一台windows服务器,实现代理比较麻烦,于是想到了jquery实现。他有两种方法,getJSON和getScript.
getScript我常用来获取服务端数据,getJSON可用于提交信息,其实两者均是实现跨域提交。
在jQuery1.3.2中,您可以通过使用JSONP形式的回调函数来加载其他网域的JSON数据,如"myurl?callback=?"。jQuery将自动替换?为正确的函数名,以执行回调函数。
Jsonp原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里动态执行回调函数。
实例:
jquery代码:
$.getJSON("http://www.app.com/index.php?c=add&callback=?",{id: 10, name: "test"}, function(data){
alert(data.msg);
});
服务端返回:
jsonp1310628945031({"rs":true,"msg":"u60a8u7684u4fe1u606fu63d0u4ea4u6210u529fuff01"})
PHP代码:
$result['rs'] = false;
$result['msg'] = '您的信息提交成功!';
$json = new Services_JSON();
header('Content-Type: application/json');
echo $_GET['callback'].'('.$json->encode($result).')';
jquery实现跨域提交(原创)的更多相关文章
- 代替jquery $.post 跨域提交数据的N种形式
跨域的N种形式: 1.直接用jquery中$.getJSON进行跨域提交 优点:有返回值,可直接跨域: 缺点:数据量小: 提交方式:仅get (无$.postJSON) $.getJSON(" ...
- jquery来跨域提交表单
说说用jquery来实现跨域提交表单 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类 ...
- 使用jQuery实现跨域提交表单数据
我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据. 在jQue ...
- jquery ajax 跨域提交(附IE浏览器解决方案)
后台输出内容之前需要指定header("Access-Control-Allow-Origin: *"); post 之前 jQuery.support.cors = true; ...
- [jQuery]$.get跨域提交不发送原因
使用 $.ajax({ url: "http://pastebin.com/embed_js.php?i=sy9gt3FR", dataType: "jsonp" ...
- .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片
.NET压缩图片保存 需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...
- ajax跨域提交
ajax跨域提交 如果在两个网站之间进行异步互动想要通过ajax时不可能的,因为header不支持xmlhttprequest这种方式的跨域提交. 但是jquery的ajax同时还提供了jso ...
- Extjs的form跨域提交文件时,无法获取返回结果
form文件表单跨域提交时,无法获取远程服务器的返回结果,form提交代码如下: form.submit({ url:'http://{remoteUrl}/hgisserver/wrds/file' ...
- NodeJ node.js Jquery Ajax 跨域请求
Jquery + Ajax 跨域请求 说白了就是前台请求ajax数据(JSON)但是请求的数据不在本地的绝对路径下,接口数据 是没有这个安全性的我对外公开的接口数据,只要你找到接口你就可以使用里面的数 ...
随机推荐
- MongoDB 启动mongo不带DB
> mongo --nodb > conn = new Mongo("localhost:27017"); > db = conn.getDB("tes ...
- ubuntu 创建快捷方式
sudo ln -s /opt/eclipse/eclipse /usr/bin/eclipse 这样就可以在命令行中敲:eclipse,来打开eclipse了. 应该还有一种方式,就像快捷方式一样. ...
- C++11中的Lambda表达式
原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C ...
- 【linux】windows和linux编码相互转换
windows-->linux:dos2unix file linux-->windows:unix2dos file
- Saltstack系列1:安装配置
安装 安装EPEL作为安装Ansible的yum源(CentOS6.4) rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release ...
- 什么是SQLCLR与使用
原帖地址:http://www.cnblogs.com/hsrzyn/archive/2013/05/28/1976555.html 什么是SQLCLR SQL CLR (SQL Common Lan ...
- VBA相关
--能否彻底隐藏某行或某列 用代码隐藏列,将其放在Private Sub Worksheet_SelectionChange(ByVal Target As Range)Columns(1).Enti ...
- JS截取后缀名,文件全名,非后缀名的方法---收藏(冷饭_)
<script language="javascript" type="text/javascript"> //取整个文件的路径并且把文件名赋给文件 ...
- SVN学习之svn命令行下的基本操作
http://huihai.iteye.com/blog/1985751 上一节已经把svn安装完成,下来就用命令行做一些简单的操作. 1.当svn安装完成后,svn管理人员会在svn的root根目录 ...
- ajax实现--技术细节详解
ajax原理和XmlHttpRequest对象 Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其 ...