2012-12-18 6 views
2

Я пытаюсь передать функцию в другую функцию, чтобы использовать в своем перезвонить, я вызвать функцию, используя ...Передача функции в JavaScript

call("login", {email:user,password:pw}, alert(getResponse())); 

вызов определяется как:

function call(url, p, f){ 
    $.getJSON(baseUrl + url, p, f(data)); 
}; 

и GetResponse определяется как:

function getResponse(d){ 
    return d.result.success; 
}; 

data возвращается getJSON (см. Здесь: http://api.jquery.com/jQuery.getJSON/)

Как я должен передать data этой функции?

Функция вызывается, потому что она попадает в точку прерывания, которую я установил.

Когда getResponse называется, хотя я получаю Uncaught ReferenceError: data is not defined

ответ

3

Использование

call("login", {email:user,password:pw}, function(data){alert(getResponse(data)})); 

Выражение alert(getResponse()) является вызов функции оповещения (с getResponse вызывается без какого-либо параметра, и, таким образом, это будет сгенерировано сообщение об ошибке, как d.result будет означать принятие result от undefined), но function(data){alert(getResponse(data)}) - это определение новой функции, принимающей данные в качестве параметра.

Также на примечании, что вам не нужно иметь f(data) в $.getJSON(baseUrl + url, p, f(data)); вам требуется только f, так что вы могли бы назвать $.getJSON(baseUrl + url, p, f);

+0

Сладкий, как я знал, что это будет что-то простое, как это. Просто не сделал достаточно js в свое время – FabianCook

1

Выражение alert(getResponse()) выскакивает предупреждение и не принимает значение функции а undefined ,

Вам необходимо передать функцию, реализация которой является предупреждающей (getResponse (d)), где d - это параметр.

Такие, как выражение function(d){alert(getResponse(d);}, например

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