ajax post请求问题

利用ajax post请求的时候添加了ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");这行代码但是结果还是404


//步骤一:创建异步对象
var ajax = new XMLHttpRequest();
//步骤二:设置请求的类型及url,注意:post请求一定要添加请求头才行不然会报错
ajax.open("post", "users.json");
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//步骤三:发送请求
ajax.send();
//步骤四:注册事件 onreadystatechange 状态改变就会调用
ajax.onreadystatechange = function () {
    //步骤五:如果能够进到这个判断,说明数据完美的回来了,并且请求的页面是存在的
    if (ajax.readyState == 4 && ajax.status == 200) {
        console.log(ajax.responseText);//输入响应的内容
    }
};

这个问题可能是因为请求的URL地址不正确导致的。请确认请求的URL地址是否正确,或者是需要添加域名前缀。如果URL地址正确,可能是服务器端配置问题导致的404错误。建议将请求改为get方式并在浏览器或者postman中测试一下,看是否能够成功访问该URL地址。

404就是路径找不到 not found

  • 以下回答由chatgpt基于相关博客总结生成:

    回答:根据参考资料,POST请求的数据必须放在消息主体中,同时需要指定消息主体的编码方式,即Content-Type。如果服务端不能正确解析请求主体的格式,可能会出现404错误提示。

    根据参考资料中的推荐,在使用原生js写ajax POST请求时,一定要注意加上setRequestHeader("Content-type","application/x-www-form-urlencoded");,这样才能正确指定消息主体编码方式,并使服务端能够正确解析请求。

    以下是使用原生js发送ajax POST请求的示例代码:

    function ajax(url, data) {
      // 创建XMLHttpRequest对象
      var xhr = new XMLHttpRequest();
      // 指定请求方式和请求地址
      xhr.open("POST", url, true);
      // 指定消息主体的编码方式
      xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      // 设置响应类型为JSON
      xhr.responseType = "json";
      // 注册回调函数,获取响应结果
      xhr.onreadystatechange = function() {
        if (xhr.readyState === XMLHttpRequest.DONE) {
          if (xhr.status === 200) {
            console.log(xhr.response);
          } else {
            console.log(xhr.statusText);
          }
        }
      }
      // 发送请求
      xhr.send(JSON.stringify(data));
    }
    

    在发送请求时需要指定请求地址和POST数据,例如:

    ajax("http://example.com/api", {id: 1, name: "example"});
    

    注意,POST数据需要转换为字符串格式发送,可以使用JSON.stringify()方法将数据转换为JSON字符串。