Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.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
从不同URL检索JSON对象的Javascript(无JQuery)函数?_Javascript_Json_Ajax - Fatal编程技术网

从不同URL检索JSON对象的Javascript(无JQuery)函数?

从不同URL检索JSON对象的Javascript(无JQuery)函数?,javascript,json,ajax,Javascript,Json,Ajax,我一直在寻找一个AJAX函数,它接收URL,然后返回JSON对象 比如说,我需要在URL1中显示JSON中的一些用户信息,还需要将这些信息与URL2中JSON中的一些帖子信息混合在一起 我希望在没有JQquery的情况下执行此操作 让我们这样说: function loadJSON(path, success, error) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.re

我一直在寻找一个AJAX函数,它接收URL,然后返回JSON对象

比如说,我需要在URL1中显示JSON中的一些用户信息,还需要将这些信息与URL2中JSON中的一些帖子信息混合在一起

我希望在没有JQquery的情况下执行此操作

让我们这样说:

function loadJSON(path, success, error)
{
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
    if (xhr.readyState === XMLHttpRequest.DONE) {
        if (xhr.status === 200) {
            if (success)
                success(JSON.parse(xhr.responseText));

        } else {
            if (error)
                error(xhr);
        }
    }
};
xhr.open("GET", path, true);
xhr.send();
}

function getInfo(){
var users, posts;
loadJSON('http://.com/users',
         function(dataU) {
            users = dataU;
         },
         function(xhr) { console.error(xhr); }
);
loadJSON('http://.com/posts',
         function(dataP) {
            posts = dataP;
         },
         function(xhr) { console.error(xhr); }
);

console.log(users);
console.log(posts);

}

getInfo();

要在没有jQuery的情况下实现这一点,您可以回到普通的JavaScript
XMLHttpRequest
s。这将允许您与远程主机建立HTTP连接,例如获取数据

要开始这些请求,您可以查看

将帮助您将JSON字符串转换为JavaScript对象



作为
XMLHttpRequest
s的替代方案,您还可以查看。它为HTTP调用提供了更干净的接口。但是,由于它仍然是实验性的,您可能希望使用polyfill。

带或不带
jQuery
XMLHttpRequest
objest是异步的。jQuery在内部使用它。FIY AJAX代表AsynchronousJavascriptAndXml。这意味着您无法从异步函数接收同步结果。但是您可以并且应该在发送给请求的回调函数中使用结果。
因此,正确的用法是从
success
error
回调调用
console.log
(或您想要的任何内容)。
XMLHttpRequest
不可用时,已知的解决方案是如何
优雅地降级。这些解决方案包括创建和附加
script
iframe
,然后从它们的
.onload
处理程序中读取。所有这些都是异步的,前面的所有注意事项都直接适用于它们。
您无法从异步函数接收同步结果。

我坚持这一真理,反对所有的反对票。

“我一直在寻找AJAX函数”-您是否尝试过编写AJAX函数?问题中的URL是否来自不同的域?请注意,通常Ajax是异步的,因此Ajax函数不会直接返回结果,而是通过回调函数或promise返回结果。处理XMLHttpRequest对象和浏览器不一致有很多细微差别。封装它的库将使您的生活更轻松。有很多关于使用XMLHttpRequest对象的例子,你的console.log放错了地方。他们需要在loadJSON回调中你的问题是什么?你的代码不起作用吗?@torazaburo实际上它不起作用。它是我试图做什么的指南,但我承认它没有帮助。简而言之,我需要在URL1中显示用户JSON中的所有用户名,但在名称旁边,我必须显示该用户在位于URL2的posts JSON中通过用户ID发布的帖子数量。不确定为什么会被否决,但我怀疑这是因为您说“无法从异步函数接收同步结果”然后推荐一个用户实现的模式来实现这一点。也许你的意思是没有本机函数可以做到这一点?@BotNet我提到的哪种模式返回同步结果?使用回调是同步的一种形式。一系列AJAX调用可能会触发异步函数,但是如果您锁定它们的回调,那么您将利用一种方法来衡量事件的同步性。首先这样做,然后当它完成时,这样做(一个发生在另一个之前,另一个等待第一个完成-这是由单词synchronous的松散定义决定的)