【问题标题】:How can I pass text with & symbol from ajax to php code?如何将带有 & 符号的文本从 ajax 传递到 php 代码?
【发布时间】:2025-12-08 00:00:02
【问题描述】:

我是 php 新手,我正在做一个计费软件,我的问题“当他们计费邮件将发送到特定的电子邮件地址时”,电子邮件工作正常。当我通过符号 & 时,邮件已发送,但在 & 符号文本消失之后。我需要在第一个单词中使用“客户姓名和地址”之类的词,我收到的文本仅剩下 客户姓名 并且地址丢失。我该如何解决这个问题?

var strVar="";
strVar += "<html>\n";
strVar += "<body>\n";
strVar += "\n";
------
------
strVar += "<div>\n";
strVar += "<center>Customer Name & Address<br><\/center>\n";
strVar += "<\/div>\n";
strVar += "<\/body>\n";
strVar += "<\/html>\n";
strVar += "\n";

        $.ajax({
            async: false,
            url: "sendmail.php",
            data: "htmldata="+strVar ,
            type: "POST",
            success: function(resp) {
                debugger;

                alert("Message Sent Successfully");

            },
            error: function(e) {
                console.dir("Contact Administrator");
            }
        });

在服务器端,我使用的是 normail PHPMailer 概念。

【问题讨论】:

  • 除了你的问题,但永远不要使用 async: false。这是非常糟糕的做法,因为它会在请求完成之前挂起 UI,使浏览器看起来像是崩溃了。
  • @RoryMcCrossan 你是对的,但是我需要在发送邮件后更新数据库中的值。
  • 这仍然没有理由使用async: false。在 success 处理程序中调用一个函数来更新数据库。

标签: php jquery ajax email


【解决方案1】:

考虑一下这个小而重要的变化:

data: {
    htmldata: strVar
}

这将确保您的数据在您的帖子中正确编码。

除此之外:为什么要在客户端创建 html 并将其发送到服务器?!?

【讨论】:

  • 因为,我喜欢客户端代码。我不熟悉php。感谢您的回答。它正在工作。
  • @MerbinJoe 但您知道这意味着客户端可以提供一些坏女孩想要尝试的任何 html 代码?这听起来像是一个巨大的安全漏洞。你永远不能依赖客户交出的东西。
  • 感谢您的建议,我将其更改为服务器端代码。
  • @MerbinJoe 很高兴我能帮上忙。还要记住在将接收到的任何数据插入服务器端生成的 html 标记之前验证其内容。或者至少在上面使用htmlescape()...