1

我已经阅读了其他一些关于此的问题,但我仍然无法弄清楚如何让它发挥作用。

我有这个函数进行ajax调用:

    function validateDataPoint(newDataPoint) {
        var $form = $(this).parents('form');
        var $formAction = $form.attr('action');
        var $validationResult;

        return $.ajax({
            type: "POST",
            url: "/DataPoints/ValidateNewDataPointBeforeSaving",
            data: newDataPoint
        });

        return $validationResult;
    }

这就是我在另一个函数中调用它的方式:

        var validationRequest = validateDataPoint(newDataPoint);
        validationResult = validationRequest.success(function (data) {
            return data.Urn;
        });

然后在同一个函数中,我想测试validationResult 的值,因为data.Urn 与在服务器端完成的处理相关的字符串值要么是“Success”,要么是“Failed”。

所以这里是下面的代码:

        //post the Json object to the server to validate and get the result
        var validationRequest = validateDataPoint(newDataPoint);
        validationResult = validationRequest.success(function (data) {
            return data.Urn;
        });

        //based on the result give the thumbs-up or thumbs-down
        if (validationResult == "Success") {
            resultFlag = "<span class='badge badge-success'><i class='icon-thumbs-up icon-white'></i></span>";
        }
        else if (validationResult == "Failed") {
            resultFlag = "<span class='badge badge-important'><i class='icon-thumbs-down icon-white'></i></span>";
        }
        else {
            resultFlag = "<span class='badge badge-warning'></span>";
        }

所以问题是...

当我尝试访问 validationResult.responseText 的值时,我得到一个未定义的错误。基本上我想将 data.Urn 的值分配给 validationResult 但我无法让它工作。如果我提醒(验证结果);我得到 [object Object] 然后如果我 alert(validationResult); 我不确定。

我在这里想念什么?

4

1 回答 1

1

jQuery 的 ajax 函数以异步方式工作。在 ajax 实际完成之前,您的检查validationResult正在发生。

为什么不把它们放在回调中?

validationResult = validationRequest.success(function (data) {
    processResponse(data.Urn);
});

function processResponse(validationResult)
{
    //based on the result give the thumbs-up or thumbs-down
    if (validationResult == "Success") {
        resultFlag = "<span class='badge badge-success'><i class='icon-thumbs-up icon-white'></i></span>";
    }
    else if (validationResult == "Failed") {
        resultFlag = "<span class='badge badge-important'><i class='icon-thumbs-down icon-white'></i></span>";
    }
    else {
        resultFlag = "<span class='badge badge-warning'></span>";
    }
}
于 2012-11-28T21:34:52.737 回答