Php 如何将query.ajax中的json响应分配给变量?
我正在尝试从url获取json响应。下面是我请求的php代码: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",
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,谢谢你的推荐。谢谢。现在可以了。