AJAX使用$_POST方法传输大量数据

AJAX transfer large amount of data using $_POST method

本文关键字:传输 数据 方法 POST 使用 AJAX      更新时间:2023-09-26

我想使用AJAX将大量文本传输到服务器。我想使用POST方法附加此文本,但我得到以下错误:

请求失败:URI太长(大于8190)

javascript代码:

function loadXMLDoc(data) {
  var xmlhttp;
  if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
  }
  xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
  }
  xmlhttp.open("POST", "http://www.mydomain.com/test2.php?blob=" + data, true);
  xmlhttp.send();
}
我的php代码:
$dataraw = $_GET["blob"];
file_put_contents('/path/to/my/file/newfile.txt', $dataraw);
echo 'file saved';

你应该改变这个

xmlhttp.open("POST","http://www.mydomain.com/test2.php?blob=" + data,true);  
xmlhttp.send();

:

xmlhttp.open("POST", "http://www.mydomain.com/test2.php", true);   
var payload = "blob=" + data;
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Connection", "close");  
xmlhttp.setRequestHeader("Content-length", payload.length);
xmlhttp.send(payload);

在POST中,参数应该放在消息正文中,而不是URL。

同时,您应该期望服务器端的参数在$_POST中-这是body参数在PHP中的最终位置。

不添加post-data到URL。请点击此链接查看post-request示例:

http://www.w3schools.com/ajax/ajax_xmlhttprequestrongend.asp

xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");