简单的XMLHttpRequest函数返回一个JSON对象

时间:2015-05-30 18:24:54

标签: javascript jquery json xmlhttprequest

我正在尝试在XMLHttpRequest get请求之后返回一个json对象,并且我做得很简短。我想这可能是因为它是异步的,但我真的无法指出如何让它工作。我做错了什么?

$(document).ready(function() {

var apiEndpoint = 'http://someapiendpoint.com/'

//Helpers
function sendRequest(_path) {
  var results =  {}
  req = new XMLHttpRequest()
  req.open('GET', apiEndpoint+_path)
  req.onreadystatechange = function() {
    if (this.readyState === 4) {
      results = JSON.parse(this.response)
    }
  }
  req.send()
  return results
}

// Action
console.log(sendRequest('client1/'))

}); // end document ready

2 个答案:

答案 0 :(得分:1)

你应该使用这种结构

function sendRequest(_path, cb) {
    req = new XMLHttpRequest()
    req.open('GET', apiEndpoint+_path);
    req.onreadystatechange = function() {
    if (this.readyState === 4) {
        cb(JSON.parse(this.response));
    }
    else{
        cb(null);
    }
}
    req.send();
}

// Action
sendRequest('client1/', function(result){
    console.log(result);
})

对于异步调用,您需要使用回调

答案 1 :(得分:0)

由于您已经在使用jQuery,因此可以执行以下操作:

$(document).ready(function() {
   var apiEndpoint = 'http://someapiendpoint.com/';

   function sendRequest(path, callback){
      $.get(apiEndpoint+path, function(response){
          callback(JSON.parse(response));
      }, json).fail(function(){
          console.log('Failed');
      });
   }

   sendRequest('client1/', function(json){
       if(json){
           console.log(json);
       }
   });
});