我想把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());
类似这样的调用方法,有没有高手给点宝贵意见啊。jQueryAjaxcallback
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());
类似这样的调用方法,有没有高手给点宝贵意见啊。jQueryAjaxcallback
例如 "WebService1.asmx/GetArray"
jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
$.post("test.php", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
你再封装个人觉得意义不大
jquery 已经有简化ajax请求的方法
$.get$.getJSON$.post
PS:最近忙。也没时间逛论坛了。回复有点慢。各位大大勿怪啊!!
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;}
});
}
PS:最近忙。也没时间逛论坛了。回复有点慢。各位大大勿怪啊!!不知楼主是到底要精简到什么程度
$.get$.getJSON$.post
你都用过了?
$.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))+"}")+")");
}
Ajax 取得数据 (异步)
Info=LoadData("ajax.ashx","getInfo=do");
*/
function AjaxLoadUrlData(pUrl, pData) {
var strReturn = "";
$.ajax({
//async:false,//true 异步 默认true
type: "POST",
dataType: "text",
url: pUrl,
data: pData,
success: function(data) {
strReturn = new String(data);
}
}); return strReturn;
}/*
Ajax 取得数据 (非异步 会有等待) 一般使用这个方法
Info=GetData("ajax.ashx","getInfo=do");
*/
function AjaxGetUrlData(pUrl, pData) {
var strReturn = "";
$.ajax({
async: false, //true 异步 默认true
type: "POST",
dataType: "text",
url: pUrl,
data: pData,
success: function(data) {
strReturn = new String(data);
}
}); return strReturn;
}
即当我调用函数
ajax('CarList.asp','CarList0','{"CarID":"120"}',aa(data)),我就是想让aa(data)能够代替success:function(data)函数。
PS:最近忙。也没时间逛论坛了。回复有点慢。各位大大勿怪啊!!不知楼主是到底要精简到什么程度
$.get$.getJSON$.post
你都用过了?
我就是想要将$.ajax中的success:function(data)这个方法返回出去,让我能够在$.ajax()之外操作data,
除了$.getJSON没用过 其他都用过了,因为项目用的就是$.ajax()连接后台方法的方式来操作的,所以有的页面光写js就写了1000多行,但实际上大多数都是$.ajax()里面的一些固定的参数,所以想要写一个通用的方法来将$.ajax()的success函数放在外面来执行,这样就能减少很多代码了。
方法1:用回调方法
<script>
//获取名称的方法,参数为一个函数
function getName(){
$.ajax({
type:"POST",
url:"提交路径",
data:"key=value",
success:callback//绑定下面定义好的回调方法
});
}//回调方法
function callback(data){
//所有操作都在这里执行
}//调用方法就执行
getName();
</script>
方法2:添加async: false.即修改为同步
<script>
function getName(){
var name = "";
$.ajax({
type:"POST",
url:"提交路径",
data:"key=value",
async :false,
success:function(data){
name = data;
}
});
return name;
}
</script>
来源出处:jquery学堂交流社区 - http://bbs.jq-school.com/showtopic-188.aspx
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);
}
});
}