Jquery: вернуть значение ajax-вызова функции вызывающей стороны? - PullRequest
0 голосов
/ 25 августа 2009

Я пытаюсь вернуть значение, которое возвращает вызов $ ajax, из функции, но возвращает только «неопределенное». Если оповещение «ответ» от вызова ajax, оно возвращает правильное значение. Вот код, что я делаю не так?:

$(".insertCandidate").live("click", (function(e) {
            var ids = this.id.toString().split("|");
            var tempCanID = ids[1];
            var canID = ids[0];
            var tempName = CandidateName(tempCanID);
            var canName = CandidateName(canID);
            //alert("HTML: "+tempName);
            $("#mergeCandidateDialog").empty();
            $.blockUI({ message: $("#mergeCandidateDialog").append(
                "<div>" + tempName + "s ansøgning til vil blive lagt under den eksiterende ansøger s data.<br /><br /> Ønsker du at fortsætte?<br /><br /></div>" +
                "<div id=\"content\">" +
                "<input type=\"button\" id=\"" + ids + "\" class=\"insertCandidateYes\" value=\"Ja\" />" +
                "<input type=\"button\" id=\"insertCandidateNo\" value=\"Nej\" /></div>"), css: { cursor: 'default', fontWeight: 'normal', padding: '7px', textAlign: 'left' }
            });
        }));

function CandidateName(candidateID) {
        var returnstring;
        $.ajax({
            type: "POST",
            url: "/Admin/GetCandidateName/",
            data: { 'candidateID': candidateID },
            succes: function(response) {
                returnstring = response;
                return;
            },
            error: function(response) {
                alert("FEJL: " + response);
            }
        });

        return returnstring;
    }

Ответы [ 4 ]

3 голосов
/ 25 августа 2009

Вы не можете сделать это, пока не дождетесь завершения вызова ajax с помощью asynch: false. Однако я бы не стал этого делать, так как он блокирует браузер и, если вызов не может вернуться, пользователь должен будет выйти из строя. Лучше выполнить рефакторинг вашего скрипта и в функции успеха вызова .ajax вызвать функцию обратного вызова.

Смотрите мой ответ на похожий вопрос здесь

1 голос
/ 25 августа 2009

Добавьте асинхронный атрибут true к вашему вызову .ajax:

    type: "POST",
    async: false, // ADD THIS
    url: "/Admin/GetCandidateName/",

Кроме того, вы пропустили "S" в случае успеха.

Это может сделать это.

0 голосов
/ 19 апреля 2012

Вы делаете 2 ajax-запроса, которые идентичны. Для повышения производительности вы должны передать массив идентификаторов методу CandidateName, а затем ваш серверный скрипт также должен вернуть массив совпадающих имен.

0 голосов
/ 25 августа 2009
 $.ajax({
        type: "POST",
        url: "/Admin/GetCandidateName/",
        data: { 'candidateID': candidateID },
        success: function(response) {
            return response;//USE THIS

            //THIS WILL RETURN FROM THE FUNCTION WITHOUT RETURNING ANY VALUE
            //return;
        },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...