просто удалите скобки, тогда вы ссылаетесь на объект-функцию. () Вызывает функцию, поэтому вы должны передать возвращаемое значение ajax_start.

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

Скажи, что у меня есть:

<script>
$(document).ready(function() {

function ajax_start() {
                      alert("starting...");
                      }

});
</script>

И я хочу использовать это в другой функции, например:

<script>
$(document).ready(function() {

$.ajax({
        beforeSend: ajax_start(),
        url: "insert_part.php",
        type:"POST",
        data: "customer="+customer
  });
});
</script>

Было бы это правильно? (Я полагаю, не так, как это не ...), как правильно сделать обратный вызов?

Ответы на вопрос(3)

Решение Вопроса

Близко.

$(document).ready(function() {

    function ajax_start() {
        alert("starting...");
    }

    $.ajax({
        beforeSend: ajax_start, // <== remove the parens
        url: "insert_part.php",
        type:"POST",
        data: "customer="+customer // <== as Skilldrick pointed out,
                                   //     remove the trailing comma as well
    });
});

Вы должны сделать это, потому что

ajax_start() оценивает значениевозвращенный выполнив функцию с именемajax_start, ноajax_start оцениваетсама функция.Изменить re: OP комментарий

«Как бы я включил в функцию обратного вызова вторую функцию. Что-то вроде - beforesend: ajax_start, other_function (не совсем так)?»

Есть несколько способов сделать это. Объедините их, используя анонимную функцию:

$.ajax({
    // if you need the arguments passed to the callback
    beforeSend: function (xhr, settings) {
        ajax_start();
        other_function();
    },
    url: "insert_part.php",
    type:"POST",
    data: "customer="+customer
});

Или просто объявите именованную функцию, которая делает то, что вы хотите, а затем используйте ее:

function combined_function(xhr, settings) {
    ajax_start();
    other_function();
}

$.ajax({
    beforeSend: combined_function,
    url: "insert_part.php",
    type:"POST",
    data: "customer="+customer
});
 Matt Ball27 янв. 2011 г., 14:59
@ Алекс: см. Мое редактирование.
 Skilldrick14 янв. 2011 г., 15:03
, в конце может вызвать проблемы в некоторых браузерах.
 Skilldrick14 янв. 2011 г., 15:12
@ Алекс Разница между ссылками и звонками. В $ .ajax вы говорите - «используйтеajax_start Функция перед отправкой ". Если вы хотите позвонить, вы будете использовать парены. Больше похоже на" Я хотел бы позвонитьajax_start функционировать сейчас ".
 Alex14 янв. 2011 г., 15:02
ах .. очень просто ... большое спасибо!
 reto14 янв. 2011 г., 16:48
Кстати. Вы также можете использовать «анонимную» функцию, написав: beforeSend: function () {alert («используется только здесь и короткий код»)}.

тогда вы ссылаетесь на объект-функцию. () Вызывает функцию, поэтому вы должны передать возвращаемое значение ajax_start.

$.ajax({
        beforeSend: ajax_start,
        url: "insert_part.php",
        type:"POST",
        data: "customer="+customer,
  });
});

beforeSend вajax_start, Другими словами, удалите скобки.

С круглыми скобками вы звонитеajax_start() и настройкаbeforeSend к возвращаемому значениюajax_start() (в этом случае я считаю, что будетundefined).

Ваш ответ на вопрос