Php 如何将query.ajax中的json响应分配给变量?

Php 如何将query.ajax中的json响应分配给变量?,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,我正在尝试从url获取json响应。下面是我请求的php代码: if($_POST){ header('Content-type: application/json'); echo '{"hello":"world"}'; } 下面是我编写的javascript: $('#site').change(function(){ var result; $.ajax({ url: "URL", data: { param:value }, type: "POST",

我正在尝试从url获取json响应。下面是我请求的php代码:

if($_POST){
header('Content-type: application/json');
echo '{"hello":"world"}';
}
下面是我编写的javascript:

$('#site').change(function(){

var result;

$.ajax({
    url: "URL",
    data: { param:value },
    type: "POST",
    dataType: "json",
    success: function(data,textStatus,jqXHR) {

     alert(data['hello']); //output: world
     result = data;

    },

});

    alert(result['hello']); //output: nothing (didn't alert) 
    alert(result); //output: undefined

});
因此,我的问题是如何将数据分配给结果?谢谢

编辑:
我的问题与

重复。虽然您可以通过在AJAX请求中将
async
参数设置为
false
来获得您想要的工作,但我敦促您接受AJAX的异步特性,只需在成功回调中完成您的工作

AJAX调用的异步特性导致(或者说不导致)您观察到的行为。在请求返回其数据之前,控制流继续通过调用。这是AJAX调用继续执行后的代码,它不会等到请求完成。您可以通过将
async
设置为
false
来强制执行此操作,但这也会导致浏览器中执行的所有代码停止,直到请求返回为止。这就违背了最初提出AJAX请求的目的


相反,您应该习惯于使用回调或在请求完成后安排工作,接受它的异步特性。需要进行一些调整才能停止按程序思考,但这是值得的。

将async:false放在ajax属性中

$.ajax({
url: "URL",
data: { param:value },
type: "POST",
dataType: "json",
async: false,
success: function(data,textStatus,jqXHR) {

 alert(data['hello']); //output: world
 result = data;

},

});

您将异步api视为同步api。您确实将
数据
分配给
结果
,这只发生在警报运行之后。欢迎来到奇妙的异步世界!你不能这样做。你有额外的
成功之后,
放置
var结果
之外。更改
处理程序并查看..谢谢大家。我现在明白了@ArunPJohny,谢谢你的推荐。谢谢。现在可以了。