jquery ajax发送到成功函数

时间:2017-04-11 19:24:35

标签: javascript jquery asp.net ajax

我试图用jquery学习ajax,但有些东西我不明白。 正如您在下面的代码中看到的,当我们调用onSuccess函数时,它不带参数,但函数本身确实接受了响应。 代码正在运行,但是如何以及为什么?如果我想向成功函数发送另一个参数我该怎么做?

$.ajax({
    type: "POST",
    //getListOfCars is my webmethod   
    url: "WebService.asmx/getListOfCars", 
    data: jsonData,
    contentType: "application/json; charset=utf-8",
    dataType: "json", // dataType is json format
    success: OnSuccess,
    error: OnErrorCall
});

****function OnSuccess(response) {
  console.log(response.d)
}****

3 个答案:

答案 0 :(得分:1)

使用其他参数的一种方法是首先定义它们并且在同一范围内

function ajaxCaller(){
  var useable= 'my inject';

  $.ajax(
    ...
    sucess: successListener
  )

  var successListener = function(data){
    console.log(data);
    console.log(useable); // can access here because the scope is given
  }

}

ajax回调是修复定义的successListener(data,statusText,jqXHR),根据我的知识你不能在这个结构中注入一些参数。

有一件事是可能的。将您需要的参数附加到dataObject并通过api忽略它。你可以访问保存所请求参数的jqXHR对象。

success: function(data, text, jqXHR)

答案 1 :(得分:1)

看起来你可能会混淆调用函数并将引用传递给函数的行为。请考虑以下代码:

function plusOne(inputParam) {
     return inputParam + 1;
}
var value = plusOne(6) // value = 7

function funcCaller(callback){
    var cbValue = poCallback(99);
    return cbValue;
}

var value2 = funcCaller(plusOne); // value2 = 100

这里有一个名为 plusOne 的函数,它只是将1给你给它的参数加1并返回它。变量设置为值7,因为您调用了传入参数6的 plusOne 函数。这是您调用函数时所期望的。 / p>

之后,您声明一个新函数,该函数接受其参数的另一个函数(通常称为回调函数)。所有 funcCaller 都会调用您传递的任何参数,默认值为99并返回响应。现在在最后一行,变量 value2 设置为100.这是因为它调用函数 funcCaller 并向其传递对 plusOne 的引用,注意它没有调用 plusOne ,只是将其引用作为参数传递给 funcCaller 。现在 funcCaller 用99调用 plusOne 并获得100作为响应,然后返回 value2

所以在这里你会注意到,在你的最后一行你刚刚传递了 plusOne 而没有任何参数,但它最终仍然被参数99调用。所以在jquery ajax中基本上会发生这样的事情,在它完成从POST获得响应之后,它会使用自己的一组参数调用传入的函数,特别是:函数(data,textStatus,jqXHR) )

答案 2 :(得分:0)

根据我对javascript函数/回调的经验,如果你没有指定参数,那么javascript就会为你处理它。如果您将代码更改为此代码:

$.ajax({
type: "POST",
//getListOfCars is my webmethod   
url: "WebService.asmx/getListOfCars", 
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json", // dataType is json format
success: OnSuccess(true),
error: OnErrorCall(false)

});

然后它会传递你告诉它的内容,它不会填写响应对象。如果要传递更多参数,则需要向成功和错误回调处理程序添加参数。您可以显式传递它们,或者jquery可以将对象传递给它们。另外,请记住,jquery在后台调用这些处理程序,您只需指定jquery调用的函数的名称。