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实现跨域提交(原创)的更多相关文章

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

    跨域的N种形式: 1.直接用jquery中$.getJSON进行跨域提交 优点:有返回值,可直接跨域: 缺点:数据量小: 提交方式:仅get (无$.postJSON) $.getJSON(" ...

  2. jquery来跨域提交表单

    说说用jquery来实现跨域提交表单 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类 ...

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

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

  4. jquery ajax 跨域提交(附IE浏览器解决方案)

    后台输出内容之前需要指定header("Access-Control-Allow-Origin: *"); post 之前 jQuery.support.cors = true; ...

  5. [jQuery]$.get跨域提交不发送原因

    使用 $.ajax({ url: "http://pastebin.com/embed_js.php?i=sy9gt3FR", dataType: "jsonp" ...

  6. .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片

    .NET压缩图片保存   需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...

  7. ajax跨域提交

    ajax跨域提交     如果在两个网站之间进行异步互动想要通过ajax时不可能的,因为header不支持xmlhttprequest这种方式的跨域提交. 但是jquery的ajax同时还提供了jso ...

  8. Extjs的form跨域提交文件时,无法获取返回结果

    form文件表单跨域提交时,无法获取远程服务器的返回结果,form提交代码如下: form.submit({ url:'http://{remoteUrl}/hgisserver/wrds/file' ...

  9. NodeJ node.js Jquery Ajax 跨域请求

    Jquery + Ajax 跨域请求 说白了就是前台请求ajax数据(JSON)但是请求的数据不在本地的绝对路径下,接口数据 是没有这个安全性的我对外公开的接口数据,只要你找到接口你就可以使用里面的数 ...

随机推荐

  1. UIDatePicker自定义背景

    selectDatePicker = [[UIDatePicker alloc]init];    selectDatePicker.frame = CGRectMake(0, 10, 280, 21 ...

  2. lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】

      转自:http://blog.csdn.net/pukuimin1226/article/details/17558247 添加:2013-12-25 更新:2013-12-26 新增分页功能. ...

  3. 【JdbcTemplete】JdbcTemplete代码详解--模板方法详解

    JdbcTemplete类层次结构 JdbcAccessor:对DataSource数据源进行管理和配置: JdbcOperations:定义了通过JDBC操作数据库的基本操作方法: JdbcTemp ...

  4. 读书笔记:Sheldon Ross:概率论基础教程:随机变量

    例1b 一个坛子里装有编号1-20的球,无放回抽取3个,取出球中至少一个号码大于等于17的概率是多少? 除了书上的解法外,还有一种解法: 考虑相反的情况:三个球的号码都小于17. 第一次从编号1-16 ...

  5. 如何把python最小化安装在客户机上面

    因为想尝试在我们的桌面软件中加入python支持,所以想简化python的库,到时候直接放到客户机上面,并且放到我们的目录下,尽量免去不必要的东西,也不要影响机子,不过当写好的程序放到测试机子上后,老 ...

  6. WINDOWS黑客基础(4):查找进程运行的基址

    从WINDOWS VISITA开始以后,windows已经开始支持随机基址的关系,也就是说以前我们的进程基址都是从0x40000开始的,如果一个变量在我们第一次运行的时候地址为0x50000,那么以后 ...

  7. rdynamic和-whole-archive

    遇到如下情况,主程序通过dlopen来打开.so文件,但是.so用到了主程序的log函数. 编译so时,通过引用主程序头文件来编译通过,头文件有log函数声明: extern "C" ...

  8. TMDS协议

    1 概述 1.1    连接结构 图1 TMDS连接结构 数据流中包含了像素和控制数据,发送器在任何给定的输入时钟周期,到底是编码像素数据还是控制数据取决于数据使能信号DE,DE有效时,指示像素数 据 ...

  9. Orcale(一)概念

    一 . 基本概念 :   1. orcaleinstanceclient : orcale的客户端  ( 1. 中文乱码问题 : NLS_LANG=SIMPLIFIED CHINESE_CHINA.Z ...

  10. iphone Dev 开发实例10:How To Add a Slide-out Sidebar Menu in Your Apps

    Creating the Xcode Project With a basic idea about what we’ll build, let’s move on. You can create t ...