使用Javascript中的fetch API接收和处理JSON

时间:2018-02-17 12:07:58

标签: javascript json ajax django fetch-api

在条件不足的项目中,我的Django应用程序发送带有消息的JSON响应。

我用于这个JsonResponse()指令,

代码:

data = {
    'is_taken_email': email
}
return JsonResponse(data)

现在我想使用Javascript fetch API接收此JSON响应,例如show alert。

我不知道如何使用fetch API来执行此操作。我想编写一个监听器,他将等待从Django App获取我的JSON响应。

我试试:

function reqListener() {
  var stack = JSON.parse(data);
  console.log(stack);
}

var oReq = new XMLHttpRequest();
oReq.onload = reqListener;

我想将我的Django应用程序中的JSON与硬编码的JSON进行比较:
例如: fetch( 'is_taken_email': email) - >然后做点什么

OR

从我的Django应用程序接收JSON并以AJAX的形式接收:

success: function(data) { if (data.is_taken_email) { make something; }

提前致谢!

1 个答案:

答案 0 :(得分:0)

在javascript中的全局窗口范围中提供了一个fetch API,第一个参数是API的URL,它是基于Promise的机制。

简单示例

// url (required)
fetch('URL_OF_YOUR_API', {//options => (optional)
    method: 'get' //Get / POST / ...
}).then(function(response) {
    //response
}).catch(function(err) {
// Called if the server returns any errors
  console.log("Error:"+err);
});

在您的情况下,如果您想接收 JSON响应

 fetch('YOUR_URL')
    .then(function(response){
         // response is a json string
        return response.json();// convert it to a pure JavaScript object
    })
    .then(function(data){
         //Process Your data  
      if (data.is_taken_email)   
           alert(data);
    })
    .catch(function(err) {
        console.log(err);
      });

使用基于XMLHttpRequest

的侦听器的示例

function successListener() {  
  var data = JSON.parse(this.responseText);  
  alert("Name is: "+data[0].name);  
}

function failureListener(err) {  
  console.log('Request failed', err);  
}

var request = new XMLHttpRequest();  
request.onload = successListener;  
request.onerror = failureListener;  
request.open('get', 'https://jsonplaceholder.typicode.com/users',true);  
request.send();

将监听器用作setInterval的示例(我不确定您是否想要做这样的事情,只是与您分享)

var listen = setInterval(function() {

  fetch('https://jsonplaceholder.typicode.com/users')
    .then(function(response) {
      return response.json();
    })
    .then(function(data) {
      if (data[0].name)
        console.log(data[0].name);
    })
    .catch(function(err) {
      console.log(err);
    });

}, 2000);//2 second

我对Django并不熟悉,但我希望这可以帮到你。