Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在变量中输入ajax结果的函数_Javascript_Jquery_Json_Ajax_Function - Fatal编程技术网

Javascript 在变量中输入ajax结果的函数

Javascript 在变量中输入ajax结果的函数,javascript,jquery,json,ajax,function,Javascript,Jquery,Json,Ajax,Function,我对这个代码有问题。 发生这种情况: 只要从console.log启动代码,我就会得到null,如果我按下更新按钮,函数就会工作 为什么会这样? 我怎么修理 var urljson = "data_json.php"; var data = null; var jqXHR = $.ajax ({ type: "GET", url: urljson, dataType: 'json', success: successHandler }); function successHan

我对这个代码有问题。 发生这种情况: 只要从console.log启动代码,我就会得到null,如果我按下更新按钮,函数就会工作

为什么会这样? 我怎么修理

var urljson = "data_json.php";
var data = null;
var jqXHR = $.ajax
({
  type: "GET",
  url: urljson,
  dataType: 'json',
  success: successHandler

});
function successHandler(result) {
     data = result; 
 }

function update(){
var jqXHR = $.ajax
({
  type: "GET",
  url: urljson,
  dataType: 'json',
  success: successHandler

});
function successHandler(result) {
     data = result; 
 }
}

$(document).ready(function(){   

 console.log(data) //// null

});


document.getElementById('update').addEventListener('click', function() {

update();

console.log(data) //// Array [ Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, other 3213… ]

});

当页面加载时,
update()
不会被调用,因此
数据
为空。将函数调用添加到
$(document).ready()
,它应该可以工作。

$。ajax()
异步返回结果。使用
success
处理程序或链接到
$.ajax()
.then()
来处理从请求返回的响应

function update() {
  var jqXHR = $.ajax({
    type: "GET",
    url: urljson,
    dataType: "json",
    success: successHandler    
  });

  function successHandler(result) {
    data = result;
    // do stuff with `data` here
    console.log(data);
  }
}

$(document).ready(update);

在document.ready事件上,JSON尚未从服务器返回,因此数据仍然为空。只有当JSON文件到达并触发成功句柄时,数据才会被设置到
$(document.ready(函数(){update();console.log(数据)})仍然无法工作。只有在xhr调用触发successHandler后,才会设置数据,因此对数据所做的任何操作都应该进入successHandler,而不是文档。就绪单击事件只起作用,因为脚本加载上的jqXHR在单击调用update()时已经获取了json文件。它起作用,但如何处理“日期”呢“$(文档).ready(更新)”中的变量?不确定您的意思?在
成功
回调或
回调中访问
$.ajax()
响应的结果。然后()
回调。我试图以这种方式使用日期变量,但不起作用:$(文档).ready(更新),function(){var length=data.length;console.log(length)};在
$.ajax()中对
数据执行任务
。我知道,但我希望我需要每隔几分钟更新一次“数据”,而不更新“成功”中包含的代码组