如何将参数传递给jQuery $ .getJSON回调方法?

Pur*_*ome 25 javascript jquery callback

我正在尝试使用jQuery通过调用一些自定义API Ajax/$.getJSON.

我正在尝试将自定义值传递给Ajax回调方法,但该值未被传递并且实际上被覆盖.这是我的代码:

var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;

$("#loading_status").show();

$.getJSON(url, null, function(results, locationType) {
    searchResults(results, locationType)
});
Run Code Online (Sandbox Code Playgroud)

locationType使用AJAX调用URL 时BEFORE 的值是3.但是在调用成功返回数据之后,locationType现在的值为success.这是因为回调方法签名是:

callback(data,textStatus)如果请求成功则执行的回调函数.

如何将一个或多个参数传递给回调方法?

Nic*_*ver 19

您不需要传入它,只需引用您已有的变量,如下所示:

var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;
$("#loading_status").show();
$.getJSON(url, null, function(results) {
    searchResults(results, locationType)
});
Run Code Online (Sandbox Code Playgroud)

null如果你没有数据对象,也没有必要通过它,它是一个可选参数,jQuery检查第二个参数是否是一个函数,所以你可以这样做:

$.getJSON(url, function(results) {
    searchResults(results, locationType)
});
Run Code Online (Sandbox Code Playgroud)

  • 你必须小心这一点.对于固定值变量,这很有用,但是如果你尝试这样做,例如,在一个循环中,其中locationType是索引,它在回调中的值将是回调执行时的值,而不是在定义.以防万一! (17认同)

Fel*_*ing 18

在函数中扭曲,例如

function getResults(locationType) {
    $.getJSON(url, null, function(results) {
        searchResults(results, locationType)
    });
}
Run Code Online (Sandbox Code Playgroud)

但是在特定情况下,您甚至不必传递它,您可以直接在回调中访问该值.

  • 如果你每次都在循环并调用$ .getJSON(),那么将它包装成函数将保留变量; 否则,它将被覆盖. (3认同)