2014-11-02 5 views
0

я следующая функция:Как добавить дополнительный аргумент для обратного вызова getJson?

$.getJSON("ajax/test.json", function(data) { 
     var items = []; 
     $.each(data, function(key, val) { 
     ... 
    }); 
} 

Как я могу передать дополнительный параметр для работы?

Я хочу что-то вроде этого:

var newParam = externalFunction(); 
$.getJSON("ajax/test.json", function(data,newParam) { 
      alert(newParam); 
      $.each(data, function(key, val) { 
      ... 
     }); 
    } 
+0

Я хочу сделать что-то вроде этого: http: //stackoverflow.com/a/26698262/2674303 – gstackoverflow

+0

Я не могу вызывать его из обратного вызова, потому что во время выполнения обратного вызова функция externalFunction() может возвращать другое значение. фактическое значение - на момент отправки запроса. – gstackoverflow

ответ

1

Может быть то, что вам нужно, это создать замыкание:

var newParam = externalFunction(); 

$.getJSON('http://date.jsontest.com/', (function (newParam) { 
    return function (data) { 
     alert(newParam); 
     $.each(data, function(key, val) { 
     ... 
     }); 
    }}(newParam))); 

Замыкание будет фиксировать значение newParam только тогда, когда $.getJSON называлась.

+0

http://jsfiddle.net/pen128tg/14/ – gstackoverflow

+0

Я хочу видеть 1 в оповещении – gstackoverflow

+0

http://jsfiddle.net/dbwrge14/3/ – gstackoverflow

0
var newParam = externalFunction(); 

$.getJSON("ajax/test.json", function(data) { 
       alert(newParam); //in this case newParam is available 
       $.each(data, function(key, val) { 
       ... 
      }); 
     }); 

http://www.w3schools.com/js/js_scope.asp;

+0

эту функцию можно вызывать много раз. Я думаю, что таким образом я получу новое значение – gstackoverflow

+0

этот код: var index, _i; for (index = _i = 0; _i <10; index = ++ _ i) { setTimeout (функция() { журнал возврата (индекс); }, 1000); } возвращает 10 много времени – gstackoverflow

+0

http://jsfiddle.net/x3wfbxr3/1/ – gstackoverflow

Смежные вопросы