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

当时在使用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负责传递。

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

时间: 2024-08-04 14:11:40

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

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

jquery的ajax方法:在success中使用return:来结束程序的时候,结束的只是success这个方法,也就是说success中的return的作用范围只是success: 如果要想在success中使用return结束整个js函数,最好在最外面的方法体内定义一个全局的变量,var isOver = true;在success中如果满足条件就将isOver置为false 在ajax方法体外通过全局变量isOver的值来决定js函数是否return, 同时也要注意:ajax方法的asy

jQuery.ajax()方法中参数详细解析

前言 在项目开发中,为了实现异步向服务端发起请求,最经常使用的就是jQuery.ajax方法了.刚开始需求比较简单,调用jQuery.ajax方法时要传的参数也就那几个常见的参数:url/data/dataType/type/cache/timeout.当时感觉这个接口使用起来很简单,直到最近项目中要实现一个发送 formData数据到服务端的需求时,我发现自己错了....原来jQuery.ajax方法中除了我用过的那几个外,还有如此之多!!于是我决定要去jQuery官网好好看看都有哪些我不知道

jq的ajax方法

相较与js异步对象的繁琐,jq的ajax对象结构更加清晰 一:ajax对象简述 ajax(Asynchronous JavaScript and XML),异步的xml和js对象,主要用于在不刷新全局页面的基础上,更新局部页面,多用于表单提交,搜索更新 在jq中的ajax对象的格式为: $.ajax({ // some code... }) js的ajax对象在此不多赘述 二:各类属性 一个完整的ajax对象起码应该有四个属性:type, url,data,success 1.type 这个是a

$.ajax()方法中的processData参数

在使用jQuery的$.ajax()方法的时候参数processData默认为true(该方法为jQuery独有的) 默认情况下会将发送的数据序列化以适应默认的内容类型application/x-www-form-urlencoded 如果想发送不想转换的的信息的时候需要手动将其设置为false 在我遇到的是传输的是blob对象的时候就是不需要将传输的数据序列化,一般的还有类似DOM树等 原文地址:https://www.cnblogs.com/zpsylgdx/p/10568837.html

向线程中的函数传入参数的注意事项

1. 当函数的形参类型为 string, 而传入的参数类型为 char[] 时, 需要在线程函数中转型, 如此可以避免空悬指针.如: void f(int, std::string const&); void oops(int some_parm) { char buffer[100]; sprintf(buffer, "%i", some_parm); //std::thread(f, 3, buffer) //not do this std::thread(f, 3, st

react中元素事件传入参数写法

react中的元素绑定事件并且传入参数,不能使用箭头函数,否则传参会立即调用 错误写法:页面刷新会立即调用 <li key={index+item} onClick={this.deleteItem(index)} > {item} </li> deleteItem = (index) => { console.log(index) } 正确写法:click的时候才会调用 <li key={index+item} onClick={this.deleteItem.bin

js jq封装ajax方法

json文本格式 { "userInfo":[ {name:"admin",password:"123"}, {name:"admin1",password:"123"} ] } js: window.onload=function(){ var txtName=..; var txtPwd=..; var url="Login.aspx?name="+txtName.value+&qu

原生封装一个类似于JQ的ajax方法

function $ajax(json){ //初始化参数 if(!json){ return; } json.type = json.type || 'GET'; json.url = json.url || ""; json.async = json.async || true; json.data = json.data || {}; json.succeed = json.succeed || function(){} if(json.dataType=="jsonp

__getattribute__(self, obj) 这个方法中的obj这个参数

class Itcast(object): def __init__(self, subject1): self.subject1 = subject1 print("^^^^^^^-------%s" %self.subject1) self.subject2 = 'cpp' def __getattribute__(self, obj): print("===========1============") print("-------%s"