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

时间:2010-08-07 12:20:21

标签: javascript jquery callback

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

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

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

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

$.getJSON(url, null, function(results, locationType) {
    searchResults(results, locationType)
});

在使用AJAX调用URL之前,locationType的值为3。但是,在调用成功返回数据后,locationType的值现在为success。这是因为method signature of the callback是:

  

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

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

6 个答案:

答案 0 :(得分:19)

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

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

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

$.getJSON(url, function(results) {
    searchResults(results, locationType)
});

答案 1 :(得分:18)

在函数中扭曲,例如

function getResults(locationType) {
    $.getJSON(url, null, function(results) {
        searchResults(results, locationType)
    });
}

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

答案 2 :(得分:4)

您可以使用.ajax方法:

var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;
$.ajax({
    url: url,
    context: { lt: locationType },
    success: function(results) {
        searchResults(results, this.lt);    
    }
});

答案 3 :(得分:2)

如果您想在回调中使用locationType(其值为3),只需使用

function(results) { .....

感谢closureslocationType将在回调中自动提供。

答案 4 :(得分:0)

可以尝试:

function getResults(locationType) {
    $.getJSON(url, {p1:'xxx', p2: 'yyy'}, function(results) {
        searchResults(results, locationType)
    });
}

答案 5 :(得分:0)

$.getJSON("url",
        "//here you can define your id, secure key to check data in your console, if you don't have condition for id and secure key just remove the secure key part."
        {secure_key:"noaccess"}, function(data){
            console.log(data);
});