php - 通过 AJAX Post 使用 UTF-8 发送表情符号

标签 php mysql ajax utf-8

我正在尝试通过 AJAX 将数据发送到 PHP 文件,然后使用 SQL 上传到我的数据库。我已经更改了表以允许插入 UTF-8。当我使用表单插入时,它工作正常,但当使用 AJAX 发送数据时,它不会发送数据。

例如,我尝试将一些文本和表情符号发送到 PHP 文件,然后将其上传到我的数据库。

我已经有了<meta charset="utf-8">在我的页面顶部甚至添加了 header("Content-Type: text/html; charset=utf-8");到页面和 PHP 文件,因为我看到其他一些帖子提到了这一点,但它没有起作用。

这是 AJAX 函数:

$detail = $('#post').text(); //Gets text from div

$.ajax({
    url: 'edit.php',
    type: 'post',
    contentType: 'application/x-www-form-urlencoded;charset=utf-8',
    data: {detail: $detail},
    datatype: 'html',
    success: function() {
        console.log($detail);
}});

$detail只是 div 中的值,所有编辑文件所做的只是 UPDATE表。

当我 console.log它返回的数据包含文本和表情符号,但不会插入到我的数据库中。

在写这篇文章时,我注意到添加了 'application/x-www-form-urlencoded;charset=utf-8'停止整个过程,但我不知道为什么。

针对提问者的后端代码:

<?php
$host = "hostname";
$user = "user";
$password = "pass";
$db_name = "database";
$tbl_name = "table";

// Connect to server and select databse.
$conn = mysqli_connect($host, $user, $password)or die("cannot connect");
mysqli_select_db($conn, $db_name)or die("cannot select DB");

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    $detail = $_POST['detail'];

    // Add your validation and save data to database
    if(strlen($detail) <= 5000) {
        $stmt = mysqli_stmt_init($conn);

        $sql = "UPDATE $tbl_name SET detail = ?";
        if (mysqli_stmt_prepare($stmt, $sql)) {
            mysqli_stmt_bind_param($stmt, "s", $detail);
            mysqli_stmt_execute($stmt);
        }
        mysqli_stmt_close($stmt);
    }
}
?>

注意:当我通过表单传递它时,这有效,但通过 AJAX 添加表情符号(例如 😂)时,它不起作用。

最佳答案

连接数据库后,将 mysqli_set_charset($conn, 'utf8mb4'); 添加到所有 php 文件中。

关于php - 通过 AJAX Post 使用 UTF-8 发送表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54042223/

相关文章:

php - 如何向 PhpStorm for MySQL 添加可接受的运算符?

php - codeigniter 插入有条件的表

mysql - 从大表中查询小选择的最快方法?

javascript - JQuery - 跨域 Ajax 调用 JSON 文件而不使用 JSONP

javascript - 通过 JQuery UI Javascript 集成循环或通配符

php - 生成人口热图 : Mapreduce?

javascript - Ajax 请求不起作用。无法连接到服务器

mysql - 将用户 ID 添加到 session 数据(codeigniter)

mysql - Cloud 9/c9 - Rails 无法连接到 mysql

javascript - Firefox 后退按钮无法与 Google 广告正常配合