当时在使用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调用的,那么该方法的参数(data,name)便是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()来传递。(此处的name参数是指getTypeList(name)中的name参数)

代码如下:

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()传入参数?的更多相关文章

  1. 在jquery的ajax方法中的success中使用return要注意的问题

    jquery的ajax方法:在success中使用return:来结束程序的时候,结束的只是success这个方法,也就是说success中的return的作用范围只是success: 如果要想在su ...

  2. jQuery.ajax()方法中參数具体解析

    前言 在项目开发中,为了实现异步向服务端发起请求,最常常使用的就是jQuery.ajax方法了.刚開始需求比較简单,调用jQuery.ajax方法时要传的參数也就那几个常见的參数:url/data/d ...

  3. 【转】Ext.ajax.request 中的success和failure

    原文链接:Ext.ajax.request 中的success和failure Ajax request对象的success事件表示request过程中没有发生错误,和自己的业务逻辑无关, 如果访问不 ...

  4. InvocationHandler中invoke方法中的第一个参数proxy的用途

    最近在研究Java的动态代理时对InvocationHandler中invoke方法中的第一个参数一直不理解它的用处,某度搜索也搜不出结果,最后终于在stackoverflow上找到了答案. 这是原文 ...

  5. JQ之$.ajax()方法以及ajax跨域请求

    AJAX(Asynchronous javascript AND xml :异步javascript和xml):是一种创建交互式网页应用的网页开发技术.AJAX可以在不重新加载整个页面的情况下与服务器 ...

  6. jq的ajax方法

    相较与js异步对象的繁琐,jq的ajax对象结构更加清晰 一:ajax对象简述 ajax(Asynchronous JavaScript and XML),异步的xml和js对象,主要用于在不刷新全局 ...

  7. $.ajax({})方法中的回调函数beforeSend,success,complete,error使用示例

    在与后台交互的时候,经常使用到jquery的$.ajax()方法来请求数据.回调函数用的比较多的是success,但是beforeSend.complete.error函数也是很有用的.下面是使用例子 ...

  8. rails中weill_paginate的paginate方法中不能使用额外参数的解决办法

    我们知道高版本中的rails中的分页功能已经放在will_paginate这个gem中,我们在控制器方法中往往需要调用其paginate方法来实现分页数据集控制,举个例子:正常的情况我们想要每页显示1 ...

  9. java方法中增加不固定参数

    JDK1.5以上支持 一.定义方法 有时方法的参数个数不固定,可以使用...来省略个数,使用时直接遍历即可,例如下面的方法 public class hi { public void print(St ...

随机推荐

  1. 二、vue响应式对象

    Object.defineProperty Object.defineProperty 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象,先来看一下它的语法: Obj ...

  2. hdu 1426 Sudoku Killer (dfs)

    Sudoku Killer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  3. oracle 查看表空间的脚本

    SELECT upper(f.tablespace_name) "表空间名", d.Tot_grootte_Mb "表空间大小(M)", d.Tot_groot ...

  4. json数据格式的简单案例

    json数据是一种文本字符串,它是javascript的原生数据格式,在数据需要多次重复使用时,json数据是ajax请求的首先.(注:ajax返回的数据格式支持三种分别为:文本格式,json.和xm ...

  5. Matlab 几种卷积的实现与比较(conv与filter,conv2与filter2)

    Matlab 几种卷积的实现与比较(conv与filter,conv2与filter2)     最近在做控制算法实现的时候,对于其中参杂的各种差分.卷积很头疼,就在网上搜集了些资料,汇总于此,以做备 ...

  6. 转载:C++ 多继承和虚继承的内存布局

    C++ 多继承和虚继承的内存布局[已翻译100%] 英文原文:Memory Layout for Multiple and Virtual Inheritance 标签: <无> run_ ...

  7. eclipse 调试(debug) burpsuite 插件(Extender)

    demo: https://github.com/src-kun/transparent-cap/tree/master/burpsuite 1.打开demo项目: 2.右键项目点击Configure ...

  8. DNS 资源记录解释

    ;SOA授权的开始;;SOA或授权的开始记录用来表示区域的启动;每个区域必须只有一个SOA记录;从名字服务器,在不能和主服务器通信的情况下,将提供12小时DNS服务, 在指定的时间后停止为那个区域提供 ...

  9. Linux有名信号量的创建(sem_open中name参数构造)【转】

    转自:http://blog.csdn.net/gfeng168/article/details/40740865 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.sem_open函数nam ...

  10. 用 gdb 调试 GCC 程序【转】

    用 GDB 调试程序 原著:Rick McMullin 用 gdb 调试 GCC 程序 转自:http://blog.csdn.net/bonnshore/article/details/795542 ...