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

我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题。本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据。

创新互联业务包括:成品网站、企业产品展示型网站建设、高端网站设计、电子商务型网站建设、成都外贸网站制作(多语言)、电子商务商城网站建设、按需规划网站、营销型网站等。效率优先,品质保证,用心服务是我们的核心价值观,我们将继续以良好的信誉为基础,秉承稳固与发展、求实与创新的精神,为客户提供更全面、更优质的互联网服务!

在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback。

注意,JSONP是JSON格式的扩展。他要求一些服务器端的代码来检测并处理查询字符串参数。

HTML

在本例中,为了演示跨域提交数据,我们假设A网站域名为www.helloweba.com,B网站域名为demo.helloweba.com。我们在A网站创建一个简单的表单,用于提交用户信息。

 
 
 
 
  1.  
  2.    

     
  3.    

     男生 

  4.      女生 

     
  5.    

     
  6.    

     
  7.   

jQuery

当用户填写完毕表单并点击“提交”按钮时,使用jQuery获取表单信息,并通过getJSON提交给B网站,请看代码:

 
 
 
 
  1. $(function(){ 
  2.     $("#myform").submit(function(){ 
  3.         var data = $(this).serialize(); //序列化表单数据 
  4.         $.getJSON("http://demo.helloweba.com/jsonp.php?callback=?",data,function(json){ 
  5.             var msg = ''; 
  6.             if(json){ 
  7.                var  sex = json.sex==1? "男生":"女生"; 
  8.                msg = "< id='result'>提交成功!
    姓名: 
  9.                "+json.username+"
    性别:"+sex+"
    年龄:"+json.age+"" 
  10.             }else{ 
  11.                msg = "服务器忙,请稍候再试!"; 
  12.             } 
  13.             $("#myform").after(msg); //将返回信息插入页面对应的元素后 
  14.         }); 
  15.         return false; 
  16.     }); 
  17. }); 

从代码中可以看出,首先将表单数据序列化,获得json格式的表单数据,然后通过getJSON将数据发送给B网站URL:http://demo.helloweba.com/jsonp.php?callback=?,注意URL后面有个callback=?,将请求转换为一个JSONP请求。然后根据B网站处理结果响应,并将响应结果动态显示在A网站的表单提交页面。

PHP

本例中,B网站的jsonp.php程序获取A网站提交过来的表单数据,并将数据进行必要的处理(如有需要,可将数据过滤并插入数据库中),然后返回JSON格式的数据给A网站的表单提交页面。

 
 
 
 
  1. $result['username'] = $_GET['username']; 
  2. $result['sex'] = $_GET['sex']; 
  3. $result['age'] = $_GET['age']; 
  4. echo $_GET['callback'].'('.json_encode($result).')'; 

如果处理成功,会返回这样一串字符串:jsonp1331385001001({"username":"\u5929\u70ed\u7279","sex":"1","age":"28"})。

本文标题:使用jQuery实现跨域提交表单数据
文章路径:http://www.shufengxianlan.com/qtweb/news43/531893.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联