JS结合Ajax获取function的返回值,求教!!!! 要么在ajax的onreadystatechange事件函数中处理你的逻辑,要么把ajax改为同步。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在GetChildClassStr这个涵数中定义一个局部变量我大概写一个伪代码function GetChildClassStr(){var s="";ajax.onreadystatechange = function() {//在这里把返回值赋给s,即是把return resultStr;改为s=resultStr;}//在ajax请求完成的后的外面。将resultStr返回;即GetChildClassStr()这个涵数的最后一行代码是return s;}这样你在其他涵数调用GetChildClassStr()就能取到返回值了 下面是我自己封装的ajax和部分代码,希望能帮到你 Object.prototype.copy=function(extendObj){ if(!App.isObject(this))throw {message:'对象不支持此属性或方法'}; if(App.isObject(extendObj))for(var p in extendObj)this[p]=extendObj[p];}Object.prototype.copyIf=function(extendObj){ if(!App.isObject(this))throw {message:'对象不支持此属性或方法'}; if(App.isObject(extendObj))for(var p in extendObj)if(App.isUndefined(this[p]))this[p]=extendObj[p];}String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'')};var App={ _getType:function(v){return Object.prototype.toString.apply(v)}, getType:function(v){if(v===undefined)return '[object Undefined]';else if(v===null)return '[object Null]';return App._getType(v)}, isFunction:function(v){return App._getType(v)==='[object Function]'}, isObject:function(v){return App._getType(v)==='[object Object]'}, isArray:function(v){return App._getType(v)==='[object Array]'}, isDate:function(v){return App._getType(v)==='[object Date]'}, isString:function(v){return App._getType(v)==='[object String]'}, isBoolean:function(v){return App._getType(v)==='[object Boolean]'}, isNumber:function(v){return App._getType(v)==='[object Number]'}, isInt:function(v){return App.isNumber(v) && (v+'').indexOf('.')<0}, isUndefined:function(v){return v===undefined}, isNull:function(v){return v===null}, isBlankString:function(v){return App.isString(v) && v.trim().length==0}, isNotBlankString:function(v){return App.isString(v) && v.trim().length>0}, isEmptyObject:function(v){return App.isObject(v) && (function(x){for(var p in x)return false;return true}(v))}, isNotEmptyObject:function(v){return App.isObject(v) && (function(x){for(var p in x)return true;return false}(v))}};var AJAX={};AJAX.copy({ /** * 建立一个ajax对象 */ createAjax:function(){ var xmlHttpRequestObj; try{ xmlHttpRequestObj=new XMLHttpRequest(); } catch(e){ try{ xmlHttpRequestObj=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e){ try{ xmlHttpRequestObj=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e){ return false; } } } return xmlHttpRequestObj; }, /** * 一个ajax的请求操作 * @param url * ajax访问的地址 * @param params * 传递的参数 * @param callback * ajax访问后的回调函数 * @param submitMode * 提交的方式,默认为post * @param async * 执行ajax的模式,异步或同步,默认为异步,设置async===false表示为同步 */ request:function(url,params,callback,submitMode,async){ var ajax=this.createAjax(); if(!ajax)return; ajax.onreadystatechange=function()//ajax的关键函数,每当发送请求时ajax的状态一改变就执行 { if (ajax.readyState==4 && ajax.status==200)//4表示ajax请求完成,200表示请求得到执行 { if(App.isFunction(callback)){callback(ajax.responseText)} } } /** * 打开请求,第一个参数为请求的方式,包括post和get两种,常用post; * 第二个参数为请求的url,前面定义的那个; * 第三个参数为ajax是同步调用还是异步调用,同步调用表示本次请求完成后才执行请求后的代码,否则边请求边执行页面的其他程序,ture表示异步 */ if(submitMode==='GET' && App.isNotBlankString(params))url+='?'+params; ajax.open(submitMode||'POST',url,async!==false); //发送请求,参数为字符串,当请求方式为post时有效 if(submitMode==='GET')ajax.send(); else{ ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); ajax.send(params); } return ajax; }, /** * 中断一个ajax */ abort:function(ajax){ajax.abort()}});使用示例:主要是AJAX.request方法var request=AJAX.request('xxx.jsp|asp|aspx|php','',function(result){alert(result)});//AJAX.abort(request); js如何获取VB ActiveX控件的值--急 jQuery dom操作 js特殊字符处理. Jquery的一个问题 讨论javascript写类和将带参数的函数绑定给一个html控件的事件有什么好方法。 ie6/7 层级出现问题 下拉框被遮住 关于include文件的链接问题 用JAVASCRIPT写出当在浏览器任意一个地方按鼠标左键时显示“这个文档被点击了”。 为何“document.all.subcategoryid.options”会报错? ifream问题,求解 求JS图片浏览器插件 javascript 设置日期,遇到个诡异问题
我大概写一个伪代码
function GetChildClassStr()
{
var s="";
ajax.onreadystatechange = function() {
//在这里把返回值赋给s,即是把return resultStr;改为s=resultStr;
}//在ajax请求完成的后的外面。将resultStr返回;即GetChildClassStr()这个涵数的最后一行代码是
return s;
}这样你在其他涵数调用GetChildClassStr()就能取到返回值了
Object.prototype.copy=function(extendObj){
if(!App.isObject(this))throw {message:'对象不支持此属性或方法'};
if(App.isObject(extendObj))for(var p in extendObj)this[p]=extendObj[p];
}
Object.prototype.copyIf=function(extendObj){
if(!App.isObject(this))throw {message:'对象不支持此属性或方法'};
if(App.isObject(extendObj))for(var p in extendObj)if(App.isUndefined(this[p]))this[p]=extendObj[p];
}
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'')};var App={
_getType:function(v){return Object.prototype.toString.apply(v)},
getType:function(v){if(v===undefined)return '[object Undefined]';else if(v===null)return '[object Null]';return App._getType(v)},
isFunction:function(v){return App._getType(v)==='[object Function]'},
isObject:function(v){return App._getType(v)==='[object Object]'},
isArray:function(v){return App._getType(v)==='[object Array]'},
isDate:function(v){return App._getType(v)==='[object Date]'},
isString:function(v){return App._getType(v)==='[object String]'},
isBoolean:function(v){return App._getType(v)==='[object Boolean]'},
isNumber:function(v){return App._getType(v)==='[object Number]'},
isInt:function(v){return App.isNumber(v) && (v+'').indexOf('.')<0},
isUndefined:function(v){return v===undefined},
isNull:function(v){return v===null},
isBlankString:function(v){return App.isString(v) && v.trim().length==0},
isNotBlankString:function(v){return App.isString(v) && v.trim().length>0},
isEmptyObject:function(v){return App.isObject(v) && (function(x){for(var p in x)return false;return true}(v))},
isNotEmptyObject:function(v){return App.isObject(v) && (function(x){for(var p in x)return true;return false}(v))}
};var AJAX={};
AJAX.copy({
/**
* 建立一个ajax对象
*/
createAjax:function(){
var xmlHttpRequestObj;
try{
xmlHttpRequestObj=new XMLHttpRequest();
}
catch(e){
try{
xmlHttpRequestObj=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
try{
xmlHttpRequestObj=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
return false;
}
}
}
return xmlHttpRequestObj;
},
/**
* 一个ajax的请求操作
* @param url
* ajax访问的地址
* @param params
* 传递的参数
* @param callback
* ajax访问后的回调函数
* @param submitMode
* 提交的方式,默认为post
* @param async
* 执行ajax的模式,异步或同步,默认为异步,设置async===false表示为同步
*/
request:function(url,params,callback,submitMode,async){
var ajax=this.createAjax();
if(!ajax)return;
ajax.onreadystatechange=function()//ajax的关键函数,每当发送请求时ajax的状态一改变就执行
{
if (ajax.readyState==4 && ajax.status==200)//4表示ajax请求完成,200表示请求得到执行
{
if(App.isFunction(callback)){callback(ajax.responseText)}
}
}
/**
* 打开请求,第一个参数为请求的方式,包括post和get两种,常用post;
* 第二个参数为请求的url,前面定义的那个;
* 第三个参数为ajax是同步调用还是异步调用,同步调用表示本次请求完成后才执行请求后的代码,否则边请求边执行页面的其他程序,ture表示异步
*/
if(submitMode==='GET' && App.isNotBlankString(params))url+='?'+params;
ajax.open(submitMode||'POST',url,async!==false);
//发送请求,参数为字符串,当请求方式为post时有效
if(submitMode==='GET')ajax.send();
else{
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajax.send(params);
}
return ajax;
},
/**
* 中断一个ajax
*/
abort:function(ajax){ajax.abort()}
});使用示例:主要是AJAX.request方法var request=AJAX.request('xxx.jsp|asp|aspx|php','',function(result){alert(result)});
//AJAX.abort(request);