今天在做取消申请的时候遇到了一个跨域ajax提交的问题。

情景是:

系统A是asp.net的站点,其中包括一个取消申请的接口(get方式通过参数提交到系统的某一个页面,然后返回提交成功或失败)

系统B为调用系统,php的站点,需要在页面中通过js调用这个取消接口。

由于A,B分别在不同的域名下,因此ajax调用的时候遇到了跨域的情况。

参考了:http://www.cnblogs.com/twobin/p/3395086.html

于是采用JSONP的方式进行了尝试。

首先,在接口页面中,通过get的参数进行处理逻辑,成功和失败后,均返回了一个jsonp的函数调用。

if (Request.QueryString["type"] != null)
{
if (Request.QueryString["type"].ToString() == "cancel")
{
string usercode = Request.QueryString["usercode"].ToString();
int userid = int.Parse(Request.QueryString["userid"].ToString());
int recordId = int.Parse(Request.QueryString["recordId"].ToString()); FLogic.Security.IIdentity id = new CDC.PowerESS.BLL.Workflow.Common.Model.IdentityImpl(userid, usercode, Guid.NewGuid()); var service = new CDC.PowerESS.FlexProvider.MonitorService();
try
{
service.SuspendProcess(id, recordId);
Response.Write("jsonp({\"IsSuccess\":true});");
}
catch (Exception ex)
{
Response.Write("jsonp({\"IsSuccess\":false});");
}
}
}

在调用方的js中,进行了如下的调用。

//取消申请
function cancelApply(recordId){
if (!confirm('确定取消申请?')) {
return false;
}
$("#ItemContainer").empty();
$("#loadingDiv").show();
//跨域调用取消接口
if (oScript) {
document.body.removeChild(oScript);
}
oScript = document.createElement('script');
oScript.src = gCancelApplyURL + '?type=cancel&usercode=' + gUserCode.Trim() + '&userid=' + gUserId.Trim() + '&recordId=' + recordId;
document.body.appendChild(oScript);
}

这段代码的主要功能是:

在页面中动态创建了一个script标签,动态分配src属性来完成数据的提交(get请求)。

同时,为了防止页面中不出现过多的script标签,动态创建的script标签对象保存在了全局变量 oScript中,每次create的时候检查一下全局对象有没有值,如果有,就先remove掉。

最后,由于这个get请求返回的是一个js 的方法调用,因此,在js里还要建立对应的处理方法:

//取消回调
function jsonp(json){
if (json['IsSuccess'] === true) {
alert('取消申请成功!');
}
else {
alert('取消申请失败!');
}
$("#loadingDiv").hide();
initPage();
}

这样,就可以对跨域请求到的结果进行处理了(json的方式)。

第一次亲自使用跨域ajax提交,感觉还不错~

Ajax跨域请求数据实例(JSOPN方式)的更多相关文章

  1. ajax跨域请求数据

    最近开始接触ajax的跨域请求问题,相比网上说的一大堆,我这里就说得比较浅显了. 关于为什么要跨域这个问题,实际的需求是当网站项目部署在一个域名上的时候,分域可以很好地解决网站卡顿问题(拥有多台服务器 ...

  2. 关于试用jquery的jsonp实现ajax跨域请求数据的问题

    我们在开发过程中遇到要获取另一个系统数据时,就造成跨域问题,这就是下文要说的解决办法: 先我们熟悉下json和jsonp的区别: 使用AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交 ...

  3. 【前端_js】解决ajax跨域请求数据

    1.ajax发送请求必须遵循同源策略,即请求方和相应方的协议头.域名.端口全部一样.只要三者有一个不一样都视为跨域,浏览器出于安全考虑不允许跨域访问. 解决ajax跨域访问的常用方法: a.使用jso ...

  4. jsonp跨域请求数据实例——手机号码查询

    前言 网上有很多开放的api,我们在本地通过ajax获取数据时,总会碰到一个问题,那就是跨域!如果不借助php等,仅仅通过js怎么解决跨域的问题呢?或许jsonp是个不错的选择. 知识准备 上篇博客 ...

  5. ajax跨域请求--jsonp实例

    ajax请求代码: //区域事件选择配送点 function changeDistrict(value){ if(value == 0){ $('#transport_node').empty(); ...

  6. AJAX 跨域请求 - JSONP获取JSON数据

    Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...

  7. JQuery的Ajax跨域请求原理概述及实例

    今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuer ...

  8. AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据

    由于受到浏览器的限制,ajax不允许跨域通信.如果尝试从不同的域请求数据,会出现安全错误.如果能控制数据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误.但是,如果仅停留在自己的服务器 ...

  9. 【转】AJAX 跨域请求 - JSONP获取JSON数据

    来源:http://justcoding.iteye.com/blog/1366102/ Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流 ...

随机推荐

  1. 教你使用破解无线路由器笔记本password

    近期非常多人问我怎么破解WiFipassword…看来大家都对免费的东西比較有兴趣.要么也可能是我太招摇了…囧… 好吧,我就写篇小小的教程,看完后,你应该可以破解大部分无线路由器password了.写 ...

  2. Unity UGUI——开源

    开源许可证:MIT/X11 来源托管网站:BitBucket

  3. 【Java基础】异常的简单分类与处理

    Java中所有的异常都继承自Throwable类,Throwable类的已知子类有Error和Exception. Error是指系统出现的错误,这种错误出现的时候,我们的程序无能为力,所以不需要进行 ...

  4. AIX 7.1 install python

    周围环境AIX7.1   设备python-2.6.2  因为互联网是非常多的安装文档.而且也没有细挑的版本号.因为我觉得python2.6 可能相对保守一些,至少之前用到的版本号是这个.所以此处依旧 ...

  5. Oracle 11G CRUD操作监控单个表

    前言:    线上oracle数据库有张表的数据有些乱,依据应用db的log和应用的log也没有检查出来谁改动了.所以决定把这张单表做个具体的insert.update.delete监控.一:使用数据 ...

  6. java提高篇(五)-----使用序列化实现对象的拷贝

          我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性 ...

  7. hdu 4454 Stealing a Cake(三分之二)

    pid=4454" target="_blank" style="">题目链接:hdu 4454 Stealing a Cake 题目大意:给定 ...

  8. 我学的是设计模式的视频教程——命令模式vs策略模式,唠嗑

    课程视频 命令模式vs策略模式 唠嗑 课程笔记 课程笔记 课程代码 课程代码 新课程火热报名中 课程介绍 版权声明:本文博主原创文章,博客,未经同意不得转载.

  9. 【C语言探索之旅】 第二部分第四课:字符串

    内容简介 1.课程大纲 2.第二部分第四课: 字符串 3.第二部分第五课预告: 预处理 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...

  10. 浅谈web网站架构演变过程(转)

    前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶 ...