XMLHttpRequest的状态为200,但responseText为空

XMLHttpRequest has a 200 status, but responseText is empty

本文关键字:responseText 为空 状态 XMLHttpRequest      更新时间:2023-09-26

我正在制作一个XMLHttpRequest来上传一个图像文件。我可以看到这是一个200的状态,我的图片正在上传到我的服务上。然而,当我使用下面的代码来获取responseText(它应该包括诸如:我的图像的URL、文件名、时间戳、图像尺寸等信息)时,它会返回一个空字符串:

  //...
  const data = new FormData();
  data.append('file', props);
  data.append('upload_preset', uploadPreset);
  data.append('api_key', apiKey);
  const xhr = new XMLHttpRequest();
  xhr.open('POST', cloudinaryURL, true);
  const sendImage = xhr.send(data);
  const imageResponse = xhr.responseText;
  console.log('Response: ', imageResponse);

将此打印到控制台:

Response:  

知道为什么会发生这种情况/如何解决这个问题吗?

谢谢!!

您在异步模式下使用XMLHttpRequest:

xhr.open('POST', cloudinaryURL, true);

但您的代码是为同步模式设计的:

xhr.open('POST', cloudinaryURL, false);

在异步模式下,xhr.send()将立即返回,而不会实际处理请求。因此,当您尝试访问xhr.responseText时,它还没有被填充。