jQuery:如何在Ajax调用后获取数据值
我已经阅读了其他一些关于这方面的问题,但我仍然不知道如何让它发挥作用 我有这个函数来进行ajax调用:jQuery:如何在Ajax调用后获取数据值,jquery,Jquery,我已经阅读了其他一些关于这方面的问题,但我仍然不知道如何让它发挥作用 我有这个函数来进行ajax调用: function validateDataPoint(newDataPoint) { var $form = $(this).parents('form'); var $formAction = $form.attr('action'); var $validationResult; return $.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中完成的,现在一切都按照预期工作,代码行也少了很多。