$.ajax返回函数问题
我想把jquery的ajax方法封装成如下方法:
url是路径,MethodName是调用后台的方法名,data是参数,CallBakc成功返回的函数,
function ajax(url,MethodName,data,CallBack){
$.ajax({
type: "Post",
//方法所在页面和方法名
url: url+"/"+MethodName,
contentType: "application/json; charset=utf-8",
data: data,
dataType: "json",
success: function (data) { },
error: function (err) {return;}
});
}
调用的时候只要ajax('aa.aspx','SayHello','{"Name":"张三"}',BackName());
类似这样的调用方法,有没有高手给点宝贵意见啊。 jQuery Ajax callback
[解决办法]
你 error: function (err) {return;} 对error没处理
你再封装个人觉得意义不大
jquery 已经有简化ajax请求的方法
$.get
$.getJSON
$.post
[解决办法]
jAjax.ajax=function(type,url,data,beforecall,callback){
$.ajax({
type:type,
url:url,
data:data,
dataType:'json',
beforeSend:beforecall,
success:function(data){
jAjax.cbFilter(data,callback);
},
error: jAjax.error
});
}
jAjax.cbFilter=function(data,cb){
if(data&&data.SessionTimeout&&data.SessionTimeout==!0){
alert(data.msg);
window.parent.location = data.url;
}else{
if(cb)cb(data);
}
}
jAjax.error=function(XMLHttpRequest, textStatus, errorThrown){
alert("ajax錯誤: status:"+(XMLHttpRequest.status)+", readyState:"+(XMLHttpRequest.readyState)+", textStatus:"+textStatus+", errorThrown:"+errorThrown);
}
jAjax.success=function(data){
if(data==null)return;
if(data.msg==undefined)return;
data.msg!=""&&alert(data.msg);
}
jAjax.serialize=function(data){
var json="";
for(var i=0;i<data.length;i++){
json+=data[i]+",";
}
return eval("("+("{"+(json.substring(0,json.length-1))+"}")+")");
}
<script>
//获取名称的方法,参数为一个函数
function getName(){
$.ajax({
type:"POST",
url:"提交路径",
data:"key=value",
success:callback//绑定下面定义好的回调方法
});
}
//回调方法
function callback(data){
//所有操作都在这里执行
}
//调用方法就执行
getName();
</script>
<script>
function getName(){
var name = "";
$.ajax({
type:"POST",
url:"提交路径",
data:"key=value",
async :false,
success:function(data){
name = data;
}
});
return name;
}
</script>
/* new 判断是否登录app*/
Nature.SSO.prototype.isLoginApp = function (callback) {
var self = this;
self.writeDebug("判断是否登录网站应用");
self.ajaxApp({
title: "是否登录网站应用",
data: { action: "WhoAmIAjax" },
success: function (data) {
self.writeDebug("获取到app登录状态:" + data.state + "(执行回调函数)");
callback(data);
}
});
};
/* new 登录app*/
Nature.SSO.prototype.loginApp = function (data, callback) {
var self = this;
self.writeDebug("登录app,设置app的标识。沟通标识:" + data.miwen);
data.miwen = decodeURIComponent(data.miwen);
self.ajaxApp({
title: "登录网站应用",
data: { action: "login", miwen: data.miwen, guid: data.guid },
success: function (data2) {
self.writeDebug("写入本地标识:userSsoID:" + data2.userSsoID + "(执行回调函数)");
callback(data2);
}
});
};
/* sso里的统一ajax
本域,/SSOApp/WebApp.ashx,不缓存
*/
Nature.SSO.prototype.ajaxApp = function(info) {
var self = this;
info.dataType = "json";
info.url = "/SSOApp/WebApp.ashx";
self.ajax(info);
};
/* 跨域,sso服务器,mySelf.SSOInfo.ssoUrl + "/SSOAuth/SSOAuth.ashx,不缓存*/
Nature.SSO.prototype.ajaxSso = function(info) {
var self = this;
info.dataType = "jsonp";
info.url = self.SSOInfo.ssoUrl + "/SSOAuth/SSOAuth.ashx";
self.ajax(info);
};
/* 跨域,资源服务,mySelf.SSOInfo.resourceUrl + "/SSOAuth/SSOAuth.ashx,不缓存*/
Nature.SSO.prototype.ajaxService = function (info) {
var self = this;
info.dataType = "jsonp";
info.url = self.SSOInfo.resourceUrl + "/SSOApp/WebApp.ashx";
self.ajax(info);
};
/* ajax 提交 */
Nature.SSO.prototype.ajax = function (info) {
var self = this;
$.ajax({
type: "GET",
dataType: info.dataType,
url: info.url,
data: info.data,
cache: false,
error: function () {
var err = "获取" + info.title + "的时候发生错误!";
self.writeDebug(err);
alert(err);
},
success: function (data) {
if (typeof (parent.DebugSet) != "undefined")
if (typeof (data.debug) != "undefined") parent.DebugSet(data.debug);
info.success(data);
}
});
}