Ajax POST-Request被裁剪

时间:2013-08-13 19:49:54

标签: php ajax apache post xampp

我正在使用以下代码执行POST请求:

function sendAjaxRequest(text) {
  var xmlhttp;

  if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
  } else {
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
  }

  xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById('results').innerHTML = xmlhttp.responseText;
    }
  }

  xmlhttp.open('POST', 'generate.php', true);
  xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  xmlhttp.send('code=' + text);
}

generate.php看起来像这样:

<?php

echo isset($_POST['code']) ? $_POST['code'] : '';

现在的问题是,如果我发送长文本,他们总是会被裁剪。我试图在post_max_size中增加php.ini,但没有成功。顺便说一句,我正在使用XAMPP。

我很感激任何指导。

1 个答案:

答案 0 :(得分:1)

通常有3种方式(在您描述的情况下)可以限制内容(假设您的AJAX请求是正确的):

  1. 也许你的角色格式不同,所以你需要确保它们符合(如果需要的话,将它们转义)符合库或脚本的要求,以便在浏览器中显示它们。

    在这种情况下(如@Mark所说):您需要使用encodeURIComponent(yourVar)对&进行编码以正确输出。这将导致它将&转换为%26并导致正确的输出。

  2. PHP限制了您的内容 - 您需要更改php.ini文件中的post_max_size。但是你已经尝试过了,所以你应该尝试2。

  3. Apache服务器限制您的内容 - 您可以使用LimitRequestBody directive进行操作。这可以设置为从0字节到2 GB的限制。