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

我正在尝试使用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 。 这是因为回调的方法签名是:

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

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

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

 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) }); 

在函数中扭曲,例如

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

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

您可以使用.ajax方法:

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

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

 function(results) { ..... 

多亏了闭包 , locationType将在回调中自动提供。

可以尝试:

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