为什么不能从Jquery $ .post函数内部更改值(JavaScript)

我试图从ajax调用获取响应并将其保存在另一个值但不会工作这是我的代码

x='go' $.post("someurl",function(data){ x=data; }) alert(x)//go 

或者这个jsFiddle

我正在寻找这个问题的解决方案,而不是将值存储在任何HTML容器中

$.post是异步的 – 回调将 alert(x)之后执行。

尝试:

 $.post("someurl",function(data){ x=data; alert(x) }) 

(不,没有别的方法 – 你必须相应地重构你的代码。不要试图将async设置为false ,否则你最终会遇到更大的问题)。

在Javascript中,当您进行此ajax调用时,您正在向“someurl”发送异步调用。 这意味着您的function继续,x仍未定义。

解决方案:

  $.post("someurl",function(data){ //use your data here }); 

或在外面定义一个函数

 var myFunction = function (data){ //do stuff with data } $.post("someurl",myFunction); 

为什么首先将x声明为字符串然后将数据放在同一个x中? 我认为你应该使用json并让你的php文件在发回之前将其解析为json。 否则它就不会给出回应。 它将检查它是否已执行调用,并且无论其成功与否都将始终为“true”。

希望这可以帮助。

BIEG