Sur JQuery AJAX POST … la requête a échoué: URI trop long (plus long que 8190)

J’ai eu l’erreur:

request failed: URI too long (longer than 8190)

J’ai vu d’autres articles sur StackOverflow pour celui-ci. Ces messages recommandent:

  • Ne pas modifier les parameters Apache (d’accord)
  • Utiliser post, ne pas obtenir
  • Ne pas utiliser jsonp avec post

J’utilise AJAX de jQuery pour POST:

  $.ajax({ url: "test.php", dataType: "json", data: paras, type: "POST", success: function(ret){callback(ret);} }); 

J’ai l’impression que vous pouvez utiliser json juste pas jsonp. Correct? Si oui, pourquoi pourrais-je encore obtenir l’erreur?

Vous devriez essayer de définir proccessData sur false.

De la documentation:

Par défaut, les données transmises à l’option de données en tant qu’object (techniquement, autre qu’une chaîne) seront traitées et transformées en une chaîne de requête, en fonction du type de contenu par défaut “application / x-www-form-urlencoded”. . Si vous souhaitez envoyer un DOMDocument ou d’autres données non traitées, définissez cette option sur false.

donc pour empêcher les données d’être ajoutées à l’url:

 $.ajax({ url: "test.php", dataType: "application/json", data: paras, type: "POST", proccessData: false, // this is true by default success: function(ret){callback(ret);} }); 

Honnêtement, je pensais que c’était automatique, mais comme votre URL est trop longue, ça vaut le coup.

J’ai rencontré ce problème lors de l’utilisation de jQuery pour soumettre des formulaires volumineux et j’ai pu résoudre ce problème en ajoutant ce plugin .

Par exemple, en utilisant le code suivant pour soumettre le formulaire après l’ajout du plug-in, j’ai résolu le problème:

  $(formSelectorHere).ajaxSubmit({ url: myURL, type: 'post', contentType: "multipart/form-data", data: $(this).serialize(), success: function(data) { function(data) { //success code here// } }); 

Si vous ne l’utilisez pas pour soumettre un formulaire, cela ne vous concerne peut-être pas et ne résoudra pas votre problème, mais c’est la situation la plus courante dans laquelle ce problème apparaît, alors j’ai pensé qu’il était utile de le mentionner. (Le plugin doit également pouvoir soumettre un formulaire en utilisant JSON, mais ne l’a pas testé personnellement).