jQuery:如何在Ajax调用后获取数据值

jQuery:如何在Ajax调用后获取数据值,jquery,Jquery,我已经阅读了其他一些关于这方面的问题,但我仍然不知道如何让它发挥作用 我有这个函数来进行ajax调用: function validateDataPoint(newDataPoint) { var $form = $(this).parents('form'); var $formAction = $form.attr('action'); var $validationResult; return $.ajax({

我已经阅读了其他一些关于这方面的问题,但我仍然不知道如何让它发挥作用

我有这个函数来进行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>";
        }
//将Json对象发布到服务器以验证并获得结果
var validationRequest=validateDataPoint(newDataPoint);
validationResult=validationRequest.success(函数(数据){
返回data.Urn;
});
//根据结果,表示赞成或反对
如果(validationResult==“成功”){
resultFlag=“”;
}
else if(validationResult==“失败”){
resultFlag=“”;
}
否则{
resultFlag=“”;
}
所以问题是

当我尝试访问validationResult.responseText的值时,我得到一个未定义的错误。基本上,我想将data.Urn的值分配给validationResult,但我就是无法实现这一点。如果我发出警报(validationResult);我得到[object object],然后如果我发出警报(validationResult);我没有定义


我在这里遗漏了什么?

jQuery的ajax函数以异步方式工作。您对
验证结果的检查是在ajax实际完成之前进行的

为什么不让他们回电话呢

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>";
    }
}
validationResult=validationRequest.success(函数(数据){
processResponse(data.Urn);
});
函数processResponse(validationResult)
{
//根据结果,表示赞成或反对
如果(validationResult==“成功”){
resultFlag=“”;
}
else if(validationResult==“失败”){
resultFlag=“”;
}
否则{
resultFlag=“”;
}
}

jQuery的ajax函数以异步方式工作。您对
验证结果的检查是在ajax实际完成之前进行的

为什么不让他们回电话呢

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>";
    }
}
validationResult=validationRequest.success(函数(数据){
processResponse(data.Urn);
});
函数processResponse(validationResult)
{
//根据结果,表示赞成或反对
如果(validationResult==“成功”){
resultFlag=“”;
}
else if(validationResult==“失败”){
resultFlag=“”;
}
否则{
resultFlag=“”;
}
}

我确实尝试过类似的方法。我当时遇到的问题是获取resultFlag的值,以便以后在同一个函数中使用。因此,使用您的示例,我将得到:
validationResult=validationRequest.success(函数(数据){processResponse(data.Urn);});需要在这里开始使用resultFlag的值
这是异步方法的本质。你必须处理这件事。除此之外,从理论上讲,您可以将ajax请求更改为与
async:false
同步,但不建议这样做,因为事实证明我解决此问题的方法完全是错误的。我循环遍历一个数组,构建一个表来显示数据行,然后将表的整个字符串转储到一个dom元素中。所以我把代码扔进垃圾箱,然后重新开始。这次,我决定使用mustache.js库中的模板,然后使用jQuery$.append函数将新的tr追加到表中。所有这些都是在validationResult中完成的,现在一切都按照预期工作,代码行也少了很多。我当时遇到的问题是获取resultFlag的值,以便以后在同一个函数中使用。因此,使用您的示例,我将得到:
validationResult=validationRequest.success(函数(数据){processResponse(data.Urn);});需要在这里开始使用resultFlag的值
这是异步方法的本质。你必须处理这件事。除此之外,从理论上讲,您可以将ajax请求更改为与
async:false
同步,但不建议这样做,因为事实证明我解决此问题的方法完全是错误的。我循环遍历一个数组,构建一个表来显示数据行,然后将表的整个字符串转储到一个dom元素中。所以我把代码扔进垃圾箱,然后重新开始。这次,我决定使用mustache.js库中的模板,然后使用jQuery$.append函数将新的tr追加到表中。所有这些都是在validationResult中完成的,现在一切都按照预期工作,代码行也少了很多。