使用jQuery实现跨域提交表单数据
在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback。
注意,JSONP是JSON格式的扩展。他要求一些服务器端的代码来检测并处理查询字符串参数。
HTML
在本例中,为了演示跨域提交数据,我们假设A网站域名为www.helloweba.com,B网站域名为demo.helloweba.com。我们在A网站创建一个简单的表单,用于提交用户信息。
<form id="myform" action="#" method="post">
<p><label>姓名:</label><input type="text" class="input" name="username" /></p>
<p><label>性别:</label><input type="radio" name="sex" value="1" checked="checked" /> 男生
<input type="radio" name="sex" value="2" /> 女生 </p>
<p><label>年龄:</label><input type="text" class="input" name="age" /></p>
<p><input type="submit" class="btn" value="提 交" /></p>
</form>
jQuery
当用户填写完毕表单并点击“提交”按钮时,使用jQuery获取表单信息,并通过getJSON提交给B网站,请看代码:
$(function(){
$("#myform").submit(function(){
var data = $(this).serialize(); //序列化表单数据
$.getJSON("http://demo.helloweba.com/jsonp.php?callback=?",data,function(json){
var msg = '';
if(json){
var sex = json.sex==1? "男生":"女生";
msg = "<div id='result'><strong>提交成功!</strong><br/>姓名:
"+json.username+"<br/>性别:"+sex+"<br/>年龄:"+json.age+"</div>"
}else{
msg = "服务器忙,请稍候再试!";
}
$("#myform").after(msg); //将返回信息插入页面对应的元素后
});
return false;
});
});
从代码中可以看出,首先将表单数据序列化,获得json格式的表单数据,然后通过getJSON将数据发送给B网站URL:http://demo.helloweba.com/jsonp.php?callback=?,注意URL后面有个callback=?,将请求转换为一个JSONP请求。然后根据B网站处理结果响应,并将响应结果动态显示在A网站的表单提交页面。
PHP
本例中,B网站的jsonp.php程序获取A网站提交过来的表单数据,并将数据进行必要的处理(如有需要,可将数据过滤并插入数据库中),然后返回JSON格式的数据给A网站的表单提交页面。
$result['username'] = $_GET['username'];
$result['sex'] = $_GET['sex'];
$result['age'] = $_GET['age'];
echo $_GET['callback'].'('.json_encode($result).')';
如果处理成功,会返回这样一串字符串:jsonp1331385001001({"username":"\u5929\u70ed\u7279","sex":"1","age":"28"})。
在很多地方应用到跨域提交数据技术,那么跨域上传附件(如图片等),是不是也可以用getJSON来实现呢?
使用jQuery实现跨域提交表单数据的更多相关文章
- jquery来跨域提交表单
说说用jquery来实现跨域提交表单 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类 ...
- Ajax 跨域提交表单
跨域提交表单,前端ajax不用做任何修改, 只需要在后端调用的方法里面添加一行代码即可. .NET 版 HttpContext.Response.AddHeader("Access-Cont ...
- PHP防止跨域提交表单
在提交的服务段的数据进行验证. $servername=$_SERVER['SERVER_NAME'];//当前运行脚本所在服务器主机的名字. $sub_from=$_SERVER[" ...
- JSONP跨域提交表单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery实现跨域提交(原创)
jquery实现跨域提交(原创) 我们在运营一个产品的时候往往会遇到这样那样的表单提交,如客户数据收集.申请加盟.意见反馈等,由此我们开发了这样一个产品,可以理解为万能型数据收集平台,不难想到,我 ...
- jquery 通过submit()方法 提交表单示例
jquery 通过submit()方法 提交表单示例: 本示例:以用户注册作为例子.使用jquery中的submit()方法实现表单提交. 注:本示例仅提供了对表单的验证,本例只用选用了三个字段作为测 ...
- 一款基于jquery ui的动画提交表单
今天要给大家分享一款基于jquery ui的动画提交表单.这款提交表单的的效果是以动画的形式依次列表所需填写的信息.效果非常不错,效果图如下: 在线预览 源码下载 实现的代码. html代码: & ...
- jQuery实现button按钮提交表单
在JSP页面中,通常使用button按钮提交表单数据,使用jQuery实现代码如下: <span style="font-family:Comic Sans MS;font-size: ...
- Struct2提交表单数据到Acion
Struct2提交表单数据到Action,Action取表单的数据,传递变量.对象 HTML.jsp <form action="reg.do" method="p ...
随机推荐
- 【PHP】将EXCEL表中的数据轻松导入Mysql数据表
在网络上有不较多的方法,在此介绍我已经验证的方法. 方法一.利用EXCEL表本身的功能生成SQL代码 ①.先在“phpmyadmin”中建立数据库与表(数据库:excel,数据表:excel01,字段 ...
- firefox如何restart重启
1.开发者工具栏可以对firefox进行重启,不是关闭firefox又打开那种重启
- winform 获取文件夹的名称 分类: WinForm 2014-08-04 15:50 242人阅读 评论(0) 收藏
目的:获取项目路径下所有文件夹的名称,并绑定到Combobox控件下: 显示要求:此文件夹名称和他的子文件名称的集合: Combobox控件名称:cmbFile 图示: 代码实现: //项目路径 st ...
- 用户浏览器关闭cookie处理方法
方法一: function getSessionId(){ var c_name = "jsessionid"; // alert("cookie:"+docu ...
- [置顶] 获取激活码,激活myeclipse
myeclipse10.0 正式版下载地址: http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/instal ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(27)-权限管理系统-分配用户给角色
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(27)-权限管理系统-分配用户给角色 分配用户给角色,跟分配角色给用户操作是基本一致的. 打开模块维护,展 ...
- 小猪的Android入门之路 Day 3 - part 3
小猪的Android入门之路 Day 3 - part 3 各种UI组件的学习 Part 3 本节引言: 在前面两个部分中我们对Android中一些比較经常使用的基本组件进行了一个了解, part 1 ...
- lua字符匹配
匹配下列格式的数据中的 source和MAC地址: Chain WiFiDog_br-lan_Outgoing (1 references) pkts bytes target prot opt in ...
- apache不解析php文档?提示需要下载(转)
在httpd.cong中 LoadModule php5_module modules/libphp5.so #这一行php5安装的时候就已经自动添加上了 AddType application/x- ...
- timestamp ---自动更新修改时间 与 记录首次插入时间
自动更新修改时间: mysql> create table z(a int ,b timestamp on update current_timestamp); mysql> insert ...