猿问

JS 方法调用问题

script.js
varhsh=function(){
functiondoAjax(_url,_method,_params,_datatype)
{
if(!$.isEmptyObject(_params))
{
var_data=$.param(_params);
$.ajax({
type:_method,
data:_data,
url:_url,
dataType:_datatype,
success:function(data){
returndata;
}
});
}
else
{
return"varparamsmustnotbeempty";
}
}
return{
init:function(){
$('[data-popover="true"]').popover({html:true});
varuls=$('.sidebar-nav>ul>*').clone();
uls.addClass('visible-xs');
$('#main-menu').append(uls.clone());
$("[rel=tooltip]").tooltip();
$(".knob").knob();
},//End.Init
login:function(){
_method=$("form").attr('method');
_url=$("form").attr('action');
_username=$.trim($("#username").val());
_password=$("#password").val();
$("#username").blur(function(){
_url=$("form").data("haoling");
varresult=doAjax(_url,_method,{username:_username},'text');
alert(result);
//if(result.err_no==0)
//{
//$("#haoling-box").slideDown('slow');
//}
});
$("#btn-login").click(function(){
});
},//End.Login
}
}();
alert(result);返回的是undefined但是ajax已经执行!-_-|||
MM们
浏览 345回答 2
2回答

江户川乱折腾

$.ajax({type:_method,data:_data,url:_url,dataType:_datatype,success:function(data){returndata;}});这部分里面的return。返回的是到doAjax函数的作用域内,而且是异步执行的;当你执行doAjax完毕这个函数的时候,ajax还没执行完毕,当你ajax执行完毕return到doAjax的作用域内的时候,doAjax的作用域已经消失了,你返回的值是无法返回给到result的。个人觉得还是作用域的问题。就算你在ajax内部把data赋值给result,后面再输出时也是没有的,因为是异步的。个人愚见,希望对你有用。也请各位大侠指点、

肥皂起泡泡

我猜你是想问success:function(data){returndata;}data咋没返回赋值给result?这里的return,是返回success:function(data)这个function的,你的doAjax方法if条件命中后执行一堆代码,没有任何返回值,所以你调用doAjax的结果就是undefined建议巩固一下语法知识
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答