【问题标题】:Ajax doesn't fire onreadystatechangeAjax 不会触发 onreadystatechange
【发布时间】:2019-03-01 04:19:45
【问题描述】:

我知道该 URL 正在按预期工作,因为我将其记录到控制台,这很好。但是,当 readyState == 4 和 status == 200 时,我无法将“好消息”登录到控制台。我尝试删除 readState,但它仍然不会记录。我尝试记录状态,它只会触发一次,值为 0。这是我第一次使用 Ajax,因此不胜感激。

function setupRequest(){
  var bttn = document.querySelector('#send');

  bttn.addEventListener('click', sendData)
}

setupRequest();

function sendData () {

console.log('ran')
  var url = 'localhost/bev/drinks.php';

  var data = document.getElementById('input').value;
  url += '?' + 'alcohol=' + data;

console.log(url)

 var request = new XMLHttpRequest();
 request.onreadystatechange = function () {
  if (this.readyState == 4 && this.status == 200) {
    console.log('good news')
            console.log(this.responseText)
        } else {
    console.log(this.status)
        }
    }

 request.open('GET', url, true);
 request.send;

  console.log('sent')

}

【问题讨论】:

  • 您是否尝试过在代码中输入 URL 的协议以便使用“http://”localhost 而不是 localhost? (cmets 会自动创建链接,因此请忽略引号)
  • 同时查看控制台和网络控制台,看看你得到了你所期望的。您不能从硬盘执行此操作。该页面必须由 Web 服务器提供,饮料必须来自同一服务器或支持 CORS 的服务器
  • 您需要使用request.send() 实际调用request.send。除非您添加括号,否则您不会做任何事情。

标签: javascript ajax


【解决方案1】:

您需要实际致电send()。每当你说request.send;

function setupRequest() {
  var bttn = document.querySelector('#send');

  bttn.addEventListener('click', sendData)
}

setupRequest();

function sendData() {

  console.log('ran')
  var url = 'https://jsonplaceholder.typicode.com/posts';

  var data = document.getElementById('input').value;
  //url += '?' + 'alcohol=' + data;

  console.log(url)

  var request = new XMLHttpRequest();
  request.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      console.log('good news')
      console.log(this.responseText)
    } else {
      console.log(this.status)
    }
  }

  request.open('GET', url, true);

  // You wrote (without parentheses):
  ///////////////////
  // request.send; //
  ///////////////////

  // You need to write
  request.send();

  console.log('sent')

}
<button type="button" id="send">Btn</button>
<input type="text" id="input">

【讨论】:

  • 这就是问题所在!我是一名 php 开发人员,很抱歉我的初学者错误。我正在关注一个在线教程,他们写的和我一样,所以我很困惑。
  • 所以这个问题应该被关闭并作为错字类型的问题删除
猜你喜欢
  • 2015-10-16
  • 2019-11-19
  • 1970-01-01
  • 2020-03-17
  • 2020-04-02
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多