script.jsvarhsh=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.Initlogin: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已经执行!-_-|||
2 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
$.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,后面再输出时也是没有的,因为是异步的。个人愚见,希望对你有用。也请各位大侠指点、
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
我猜你是想问success:function(data){returndata;}data咋没返回赋值给result?这里的return,是返回success:function(data)这个function的,你的doAjax方法if条件命中后执行一堆代码,没有任何返回值,所以你调用doAjax的结果就是undefined建议巩固一下语法知识
添加回答
举报
0/150
提交
取消