Sur la base de la réponse de John, j'ai changé la requête GET en requête POST. Cela fonctionne, sans avoir à modifier la configuration du serveur. J'ai donc cherché comment mettre cela en œuvre. Les pages suivantes m'ont été utiles :
Exemple de jQuery Ajax POST avec PHP (Notez la remarque sur la désinfection des données affichées) et
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
En fait, la différence est que la requête GET contient l'url et les paramètres dans une seule chaîne de caractères, puis envoie null :
http.open("GET", url+"?"+params, true);
http.send(null);
alors que la requête POST envoie l'url et les paramètres dans des commandes séparées :
http.open("POST", url, true);
http.send(params);
Voici un exemple concret :
ajaxPOST.html :
<html>
<head>
<script type="text/javascript">
function ajaxPOSTTest() {
try {
// Opera 8.0+, Firefox, Safari
ajaxPOSTTestRequest = new XMLHttpRequest();
} catch (e) {
// Internet Explorer Browsers
try {
ajaxPOSTTestRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxPOSTTestRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
ajaxPOSTTestRequest.onreadystatechange = ajaxCalled_POSTTest;
var url = "ajaxPOST.php";
var params = "lorem=ipsum&name=binny";
ajaxPOSTTestRequest.open("POST", url, true);
ajaxPOSTTestRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxPOSTTestRequest.send(params);
}
//Create a function that will receive data sent from the server
function ajaxCalled_POSTTest() {
if (ajaxPOSTTestRequest.readyState == 4) {
document.getElementById("output").innerHTML = ajaxPOSTTestRequest.responseText;
}
}
</script>
</head>
<body>
<button onclick="ajaxPOSTTest()">ajax POST Test</button>
<div id="output"></div>
</body>
</html>
ajaxPOST.php :
<?php
$lorem=$_POST['lorem'];
print $lorem.'<br>';
?>
Je viens d'envoyer plus de 12 000 caractères sans aucun problème.
0 votes
Si vous rencontrez cette erreur sur un serveur Windows et/ou dans une application IIS / ASP.NET, consultez la question : stackoverflow.com/q/23237538/12484