码迷,mamicode.com
首页 > Web开发 > 详细

如果给JQ的ajax方法中的success()传入参数?

时间:2015-05-17 12:00:21      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

当时在使用JQuery提供的Ajax技术的时候,我有个需求,就是要给它请求成功后调用的success()方法传入参数;

所以,我就直接这样子写了:

<script>
function getTypeList(name){
  $.ajax({
    url : ‘<c:url value="admin/type_loadTypeList.action"/>‘,
    type : ‘get‘,
    contentType : "text/html;charset=utf-8",
    dataType : ‘json‘,
    success : function(data,name) {      
          alert(name);//查看name的值
      mycallback(data,name);//回调函数
    }
    });
 }
</script>            

当时我传入name="Java"。

当我运行后,alert(name)返回的值却是“success”!!

怎么回事呢?

原来success: function(data,name)是Ajax在请求成功后自动调用的,所以这个方法是Ajax调用的,那么该方法的参数便是Ajax提供的了。(js学的差了点,所以当时脑子没转过来)

其中function(data,name)的参数data是客户端请求后台,由后台返回的值。

参数name这是个比较特殊的参数名,因为刚刚好在Ajax中有个参数名也叫name,所以,Ajax就以为你是要它把它自己的参数name传进去。该name的值却刚好是"success";

如果你把function(data,name)的参数name改为其它的话,那么就不会返回为"success",而是返回为空字符串了。(当然还有可能你取了跟Ajax内部其它的参数名相同的名字,那么返回便是Ajax的参数的参数值了)

==============================解决================

那么问题来了:

给function()传入的参数名跟Ajax的参数名相同就会返回Ajax的参数值,这不是我们想要的。

但是,你穿入的参数名跟Ajax的参数名不同,就会找不到该参数值,这也不是我们想要的;(因为这个方法是由Ajax来调用,如果Ajax没有该参数,那么该参数就为空)

那么该怎么办呢?

其实,我们并不需要传入参数,直接在把name参数传给mybackdata(data,name),而不需要通过function()来传递。

代码如下:

function getTypeList(name){
  $.ajax({
    url : ‘<c:url value="admin/type_loadTypeList.action"/>‘,
    type : ‘get‘,
    contentType : "text/html;charset=utf-8",
    dataType : ‘json‘,
    success : function(data) {
      mycallback(data,name);
    }
  });
}

总结:

Ajax的请求成功调用的方法中的参数是由Ajax负责传递。

 

本人文笔写的不太好,希望各位大牛多多点评指点。。

如果给JQ的ajax方法中的success()传入参数?

标签:

原文地址:http://www.cnblogs.com/JamKong/p/4509289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!