javascript - 如何将 AJAX 请求从 vanilla JS 重写为 JQuery?

标签 javascript jquery ajax ajax-request

目前我正在学习 JS 并且非常熟悉 vanilla JS,但是 JQuery 语法对我来说似乎有点奇怪。所以我在 JS 上有以下代码,它工作得很好:

let xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    questions = JSON.parse(this.responseText);
    loadQuestionsData();
  }
};
xhttp.open("GET", "http://localhost:8080/questions", true);
xhttp.send();

我在这里为我的本地主机创建新的 XMLHttpRequest 并获取问题的 JSON,当响应准备就绪时,函数 loadQuestionsData() 被执行(它将问题列表插入到表中)。 我试图用 JQuery 重写它,但它不起作用,我不明白为什么。这是我第 n 次尝试这样做:

$(document).on('readystatechange', function() {
  $.ajax({
    url: "http://localhost:8080/questions",
    type: 'GET',
    success: function() {
      questions = JSON.parse(this.responseText);
      loadQuestionsData();
    }
  })
})

我也尝试过以下方法,但它也不起作用:

$(document).on('readystatechange', function() {
  questions = JSON.parse($.ajax({
    url: "http://localhost:8080/questions",
    type: 'GET',
  })).responseText;
})

我想问题出在语法上?代码在 responseText 上停止运行。

最佳答案

文档对象没有 onreadystatechange 事件 - 这是 XHR 对象的一部分。 jQuery AJAX 方法将为您处理状态更改(部分简单性)。

此外,成功处理程序有一个参数,即响应文本,因此您需要将其添加到函数签名中,以便您可以在函数中访问它。

改成这个...

  $.ajax({
      url: "http://localhost:8080/questions",
      type: 'GET',
          success: function(responseText) {
          questions = JSON.parse(responseText);
          loadQuestionsData();
      }
  })

关于javascript - 如何将 AJAX 请求从 vanilla JS 重写为 JQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42974342/

相关文章:

javascript - jQuery函数从数组中获取所有唯一元素?

javascript - 限制每行的字符数并换行,同时保留前导空格

javascript - 为什么 $.click() 应该包含在 $(document).ready() 中?

javascript - 创建自定义输入字段

Javascript 到图像回退

javascript - wrap() 多次重复元素 - jQuery

jquery - 防止页面加载时的默认哈希行为

javascript - 在 Javascript 中跨域进行 RESTful 请求

javascript - 为ajax设置超时(jQuery)

html - AJAX 通过发布整个表单提交