Jquery 如何从ajax事件中获取返回值?

Jquery 如何从ajax事件中获取返回值?,jquery,ajax,post,Jquery,Ajax,Post,这是我的代码: var noSubTasks = $.post('/taskuri/getTheNumberOfSubtasks/', { projectID: projectIdRow, taskName : result }, function(data2){ var x = data2; }); alert(x); fire bug告诉我这个错误: ReferenceError: x is not defined error source line: alert(x); 谁能

这是我的代码:

var noSubTasks = $.post('/taskuri/getTheNumberOfSubtasks/', { projectID: projectIdRow, taskName :  result }, function(data2){
    var x = data2;
});
alert(x);
fire bug告诉我这个错误:

ReferenceError: x is not defined
error source line:
alert(x);
谁能告诉我为什么???如何将数据2分配给变量??Thx问题 AJAX 。。。调用是异步的。这意味着,如果希望在执行ajax请求后直接访问变量,则无法确保ajax请求已完成。你可以用一种方法来解决这个问题

范围界定 引发异常,因为x未在您的作用域中定义。如果要更改变量x=data2;到window.x=data2;或者只是x=data2;,您应该能够在全局范围内访问/发出警报

我建议您阅读的答案,由于变量范围非常好的解释

解决方案 [……]

[……]

jQuery文档:


解决这个问题的一个想法是: 创建隐藏输入类型的步骤

<input type="hidden" id ="noSubTask">
之后,从隐藏输入中获取值:

var getTheNumberOfSubtasks = $("#noSubtask").val();
alert(getTheNumberOfSubtasks );

你不能这么做,因为ajax是异步的。请看上面的链接,看看如何处理它。我知道,但是没有什么棘手的方法或东西来处理这个问题?thxno当然没有同步请求,但这不是一个solution@Chester-警报在服务器响应之前执行,这就是为什么x没有声明为var x当时还没有执行的原因。ajax的异步调用是如何处理的?在调用ajax之前,警报将被执行。这几行代码位于循环、projectID和taskname之间,它们是不同的。如果我alertx,它会返回错误的值。仍然一样,它会在console@Chester-我已经编辑了我的回答我打赌你从服务器端脚本中得到一个错误。请检查您的php和sql!
<input type="hidden" id ="noSubTask">
var noSubTasks = $.post('/taskuri/getTheNumberOfSubtasks/', { projectID: projectIdRow, taskName :  result }, function(data2){
$("#noSubtask").val(data2);
});
var getTheNumberOfSubtasks = $("#noSubtask").val();
alert(getTheNumberOfSubtasks );