javascript - 在 Jquery Ajax 调用之外访问 JSON 字符串

标签 javascript jquery ajax json

我想知道这些是不是以传统 var 集的形式访问 jquery ajax 调用结果的任何方法,以实现函数时尚。例如考虑:

function getPoints(){
        //An array of JSON objects
        var Points;

        $.ajax({
          url: "js/retrievePointsDataJson.php",
          dataType:'json',
          type: 'POST',
        }).done(function(data){
            //console.log(data);
            Points.append(data);
        });

        console.log(Points);
        return Points;
    }

注释掉的 console.log 显示了 json 对象的数组,而外部的则没有。现在,我尝试了这个:

var Points = $.ajax({ ...});

我在一个更大的对象中看到了响应文本,但我不确定如何访问响应文本。 console.log(Points.responseText) 产生一个 undefined variable 。 这种方法可能吗? Here是另一个带有类似问题的复选标记的问题。

我有另一个解决方案,将我的代码封装在 done() 函数中,这样我就可以访问我的所有数据。我只是好奇我正在尝试做的事情是否可行。

谢谢。

最佳答案

是的,这是可能的,但是,您必须等待请求完成才能这样做。但是,由于您不能有效地强制 return 等待数据存在,您唯一的选择是返回一个延迟对象,或者以允许的方式重写函数它接受回调。

function getPoints(){
    return $.ajax({
      url: "js/retrievePointsDataJson.php",
      dataType:'json',
      type: 'POST'
    });
}
getPoints().done(function(data){
    console.log(data);
});

function getPoints(callback){
    return $.ajax({
      url: "js/retrievePointsDataJson.php",
      dataType:'json',
      type: 'POST',
      success: callback
    });
}
getPoints(function(data){
    console.log(data);
});

关于javascript - 在 Jquery Ajax 调用之外访问 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031664/

相关文章:

java - 当 ajax 调用提出请求时,重定向页面在过滤器中不起作用?

javascript - 使用 javascript 在日期选择器日期名称上添加点 (.)

jQuery UI 可排序和两个连接列表

javascript - 使用 JS 和 AJAX 提交表单

javascript - JavaScript 中匿名函数作为包装器的必要性

javascript - 如何使用 PHP 获取多选项选择中的所有选项?

javascript - 我应该如何处理 javascript 调用中的 Asp.net MVC URL?

javascript - 将行添加到由 thymeleaf 填充的表中

javascript - 使用 CKEditor 自定义文件浏览器并使用 ASP.Net MVC 上传

javascript - 在angular bootstrap ui中点击关闭下拉菜单