使用 Ajax 使用 POST 方法将大量字符从 javascript 发送到 PHP

Ema*_*een 2 javascript php ajax

这是我的JS文件

function save()
{

    var hist = document.getElementById("hist").value;
                var mission =   document.getElementById("mission").value;

            var params = "history=" + hist+ "&mission=" + mission;
 var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() 
        {
             if (this.readyState == 4 && this.status == 200 ) 
            {

                 UserAccountInfo =   this.responseText;
                 alert(UserAccountInfo);
            }
        }
        xmlhttp.open("POST","savecompany.php",true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send(params);  
}   
Run Code Online (Sandbox Code Playgroud)

历史消息将是

由工程师 Anas El-Menoufi 创立,他在 WC Heraus GmbH 担任非洲和中东市场营销顾问和业务开发经理 8 年。自 1983 年以来,MYMSA 被埃及市场认可为埃及和中东和北非地区首批专门为多个领域的初级和二级测试和校准实验室提供解决方案、仪器、咨询和售后服务的公司之一。

使命将是

旨在通过提供最好的咨询、提高市场知名度以及与世界各地最好的制造商合作来赢得客户的信任和满意度。

我们相信,我们内部能力的建设将会反映在市场上。

将这些变量发送到 PHP 文件后

历史变成了

由工程师 Anas El-Menoufi 创立,他在 WC Heraus GmbH 担任非洲和中东市场营销顾问和业务开发经理 8 年。自 1983 年以来,MYMSA 在埃及市场被公认为是埃及和中东和北非地区首批专门为小学提供解决方案、仪器仪表、咨询和售后服务的公司之一。

和使命

旨在赢得客户的信任

仅有的!!!为什么会出现这种情况???我怎样才能发送整个大消息?

这是我的 PHP 文件

<?php

    require "conn.php";


    $history= $_POST["history"];
    $mission = $_POST["mission"];

    $sql = " UPDATE company SET history ='$history' , mission='$mission'  where id='1'";
    mysqli_query($conn,$sql);


echo "done";
mysqli_close($conn);
?>
Run Code Online (Sandbox Code Playgroud)

小智 5

首先,您应该在 POST 请求的正文/有效负载中发布此类数据,但这就是您当前的解决方案不起作用的原因:

正如您所看到的,您的文本恰好在文本中的“&”符号之前停止 - 这是因为 & 符号是附加另一个查询参数的 URL 组件 - 这需要编码为 %26,幸运的是 JavaScript 有一个函数去做这个,encodeURIComponent

创建 params 变量时,可以encodeURIComponent这样使用:

var params = "history=" + encodeURIComponent(hist) + "&mission=" + encodeURIComponent(mission);
Run Code Online (Sandbox Code Playgroud)