javascript - 使用 $.post 请求 jQuery 对外部 PHP 进行 406 响应

标签 javascript php jquery .htaccess http-status-code-406

我尝试通过 jQuery 中的 $.post 发布大量文本并收到 406 响应。在 300 个字符左右的情况下它可以正常工作。下面是我的代码:

index.php

html

<form class="formss" action="index.php">
    <textarea id="submittts" name="tts" spellcheck="false"></textarea>
</form>

jQuery

$('.save').click(function() {
    $.post('store.php', $('.formss').serialize())
});

store.php

<?php
$tts = $_POST['tts'];
$texttostore = $tts;

$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "notes";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO notes (code)
VALUES ('$texttostore')";

if ($conn->query($sql) === TRUE) {
    echo stripslashes(str_replace('\r\n',PHP_EOL,$texttostore));
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

.htaccess

<IfModule mod_security.c>
SecFilterCheckURLEncoding Off
</IfModule>

得到以下响应: /image/MUZpX.png

也尝试过本地表单提交,但它也会提出错误的请求。

注意:存储时所有空格和格式都会保留,这是有意的

如果有人能帮助我那就太好了,谢谢:)

最佳答案

Web 浏览器向服务器发出信息请求。发生这种情况时,它会发送一个 Accept header 。这告诉服务器浏览器可以接受什么格式的数据。如果服务器无法按照 Accept header 中请求的格式发送数据,服务器会发送 406 Not Acceptable 错误

从评论中所附的截图中,您可以清楚地看到响应头中的charsetiso-8859-1。只需以 UTF-8 编码发送响应即可解决问题。

看看这个 SO用于在 PHP 响应中设置字符集 header 的链接。

关于javascript - 使用 $.post 请求 jQuery 对外部 PHP 进行 406 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641203/

相关文章:

javascript - 执行 ElementArrayFinder

Javascript/JQuery 取消选择单选按钮

c# - asp.net 网络表单中的 mysql_fetch_array

单击时javascript切换表格行背景颜色

jquery - 我如何获得标签的值

jquery - Google 图书之类的图像 slider

javascript - 如何在 JavaScript 中禁用弹出窗口

javascript - 如何使用蓝牙键盘在 iPad 和 iPhone 上玩 javascript 游戏?

php - Facebook 权限 "birthday"给我错误的年龄

php - Magento - 在顶级类别菜单名称旁边放置图像