Jquery:将ajax调用的值返回给调用函数?

时间:2009-08-25 09:06:25

标签: jquery

我试图从函数返回$ ajax调用返回的值,但它只返回“undefined”。如果警告来自ajax调用的“响应”它将返回rigth值。这是代码,我做错了什么?:

$(".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 个答案:

答案 0 :(得分:3)

除非您等待使用asynch:false完成ajax调用,否则无法执行此操作。但是我不会这样做,因为它会锁定浏览器,如果调用无法返回,则用户将不得不崩溃。最好重构脚本并在.ajax调用的成功函数内调用回调函数。

查看我对类似问题的回答here

答案 1 :(得分:1)

在.ajax调用中添加async true属性:

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

另外,你成功地取消了“s”。

可能会这样做。

答案 2 :(得分:0)

你正在做2个相同的ajax请求。要提高性能,您应该将一组ID传递给CandidateName方法,然后服务器端脚本也应该返回匹配名称的数组。

答案 3 :(得分:-2)

 $.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;
        },