0

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';
4

2 に答える 2

3

これを変更する必要があります

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 のサーバー側のパラメーターを期待する必要があります。これは、PHP で body パラメーターが最終的に配置される場所です。

于 2013-02-26T02:13:57.153 に答える
2

URL に投稿データを追加しません。事後リクエストの例については、次のリンクを確認してください。

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

xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
于 2013-02-26T02:15:03.300 に答える