项目中关于ajax jsonp的使用
项目中关于ajax jsonp的使用,
出现了问题:可以成功获得请求结果,但没有执行success方法
总算搞定了,记录一下
function TestAjax()
{
$.ajax({
type : "get",
async : false,
url : "ajaxHandler.ashx", //实际上访问时产生的地址为: ajax.ashx?callbackfun=jsonpCallback&id=10
data : {id : 10},
cache : false, //默认值true
dataType : "jsonp",
jsonp: "callbackfun",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"jsonpCallback",
//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
//如果这里自定了jsonp的回调函数,则success函数则不起作用;否则success将起作用
success : function(json){
alert(json.message);
},
error:function(){
alert("erroe");
}
});
}
function jsonpCallback(data) //回调函数
{
alert(data.message); //
}
public class ajaxHandler : IHttpHandler
{
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string callbackfun = context.Request["callbackfun"];
context.Response.Write(callbackfun + "({name:\"John\", message:\"hello John\"})");
context.Response.End();
}
public bool IsReusable {get {return false;}
}
---
ajax请求参数说明:
dataType string 服务器返回的数据类型。
如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。
可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。
注意:在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回 JSON 数据 。
"text": 返回纯文本字符串
"jsonp":jsonp格式。使用jsonp形式调用函数时,
访问url时会自动将url后面添加上如"callback=callbackFunName" 以执行回调函数(callbackFunName)。
jsonp string
在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种get或post请求中url参数里的"callback"部分,
比如 jsonp:'callbackfun' 则将会生成"callbackfun=?"传给服务器。
jsonpCallback String 此参数为jsonp请求指定一个回调函数名。
这个值将用来取代jQuery自动生成的随机函数名。 即上面"callback=?"中的问号部分
这主要用来让jQuery生成度独特的函数名,这样请求更容易,也能方便地提供回调函数和错误处理。
也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。
ajax jsonp与普通的ajax请求的主要区别在于——请求响应结果的处理。如上面代码所示的响应结果为:
jsonpCallback({ name:"world",message:"hello world"});
实际上就是调用jsonp回调函数jsonpCallback,并将要响应的字符串或json传入此方法,
关于自定了jsonp的回调函数, success函数则不起作用
大概其底层的实现(当然这是默认的回调函数的时候,否则就不会执行success的方法吧):
function default_jsonpCallback(data)
{
success(data); //在默认的回调方法中执行
}
最后一个比较简单的方法,
$.getJSON("GetUserbyName.aspx?name=ww&callback=?",
function(date)
{
//....
}
)
项目中关于ajax jsonp的使用的更多相关文章
- Struts2项目中使用Ajax报错
在Struts2项目中使用Ajax向后台请求数据,当添加了json-lib-2.3-jdk15.jar和struts2-json-plugin-2.3.4.1.jar两个包时,在result中配置ty ...
- 项目中关于AJAX的使用总结
一.使用情况:AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下使用.AJAX的核心:向服务器发送多个请求而无需用户等待来至服务器的响应. 二.AJAX的优势 1. ...
- JavaWeb项目中使用ajax上传文件
1.jsp $("#cxsc").click(function(){ var bankId = $("#bankId").val(); var formdata ...
- 在.net MVC项目中使用ajax进行数据验证
1.首先要在网页引入应该引入的js文件 在这里回顾一下在模板页里面挖坑的技术 2.在html中使用html辅助方法 3.验证模型 4验证方法
- django项目中的ajax分页和条件查询。
1,路由 #主页面路由 re_path('article/article_list/', article.article_list,name='article/article_list/'), #分页 ...
- Vue.js项目中使用 Ajax 和 FormDate 对象上传文件
let param = new FormData(); param.append("paths", this.ruleForm.uploadPath); param.append( ...
- 实战:vue项目中导入swiper插件
版本选择 swiper是个常用的插件,现在已经迭代到了第四代:swiper4.常用的版本是swiper3和swiper4,我选择的是swiper3. 安装 安装swiper3的最新版本3.4.2: n ...
- JavaEE-09 Ajax与jQuery在JavaEE项目中的使用
学习要点 JavaScript实现Ajax jQuery实现Ajax JSON JSON-LIB FastJSON JavaScript实现Ajax 认识Ajax 旧版百度地图 百度搜索自动补全 百度 ...
- C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求
C# 动态创建SQL数据库(二) 使用Entity Framework 创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...
随机推荐
- Microsoft ACE OLEDB 12.0概念及用法
首先需要清楚几个概念: Database engine(数据引擎):一些预先存储于数据库中的组件: Microsoft JET (Joint Engine Technology):Microsoft ...
- mongodb sharding配置
mongodb集群配置 1 Mongo使用sharding集群 mongodb副本集群 mongos1 192.168.20.137 mongos2 192.168.20.138 mongo_conf ...
- dubbo源码分析1-reference bean创建
dubbo源码分析1-reference bean创建 dubbo源码分析2-reference bean发起服务方法调用 dubbo源码分析3-service bean的创建与发布 dubbo源码分 ...
- MVC Action返回Json
Action [HttpPost] public ActionResult Edit(Study_CourseHourModel model) { ...
- TCP带外数据
传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同 ...
- bzoj1741 [Usaco2005 nov]Asteroids 穿越小行星群
网络流,对于每一个行星,将行星所在行到行星连一条流量为1的边,将行星到其所在列连一条流量为1的边,从源点到所有行连一条流量为1的边,将所有列到汇点都连一条流量为1的边,最大流即为答案. 代码 #inc ...
- html5,表单与label标签的用法2
<form action="" autocomplete="on"> <input type="submit" va ...
- 25条提高iOS app性能的方法和技巧
以下这些技巧分为三个不同那个的级别---基础,中级,高级. 基础 这些技巧你要总是想着实现在你开发的App中. 1. 用ARC去管理内存(Use ARC to Manage Memory) 2.适当的 ...
- HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)
Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...
- [attribute=value] 匹配给定的属性是某个特定值的元素
描述: 查找所有 name 属性是 newsletter 的 input 元素 HTML 代码: <input type="checkbox" name="news ...