Почему я должен заключать функцию в другую функцию? - PullRequest
2 голосов
/ 18 июля 2010

Когда я пишу функцию в JSON, почему я должен заключать ее в анонимную функцию?

Это работает:

$.ajax({
        type: 'POST',
        url: 'http://www.myurl.com',
        data: data,
        success: function(data) {
            alert(data);
        }
});

Это не работает:

$.ajax({
        type: 'POST',
        url: 'http://www.myurl.com',
        data: data,
        success: alert(data)
});

Спасибо

Ответы [ 2 ]

6 голосов
/ 18 июля 2010

Вы можете сделать это.Вы просто используете неправильно syntax.

Свойству success требуется функция выражение , а не вызов функции (), которая затем возвращает значение в success);

Итак

success: myfunction

вместо

success: myfunction()
3 голосов
/ 18 июля 2010

Короче говоря, потому что вы выполняете alert() и пытаетесь присвоить результат обратному вызову success, поэтому это не сработает (результат из alert() равен undefined).Однако вы можете сделать это:

$.ajax({
    type: 'POST',
    url: 'http://www.myurl.com',
    data: data,
    success: customFunc //*not* customFunc() which would call it
});

В этом случае customFunc получит те же параметры, что и проходы success, поэтому его подпись должна быть: customFunc(data, textStatus, XMLHttpRequest), хотяможет быть подмножеством, например customFunc(data).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...