ajax 发布后的 Phpmyadmin 奇怪的字符
Posted
技术标签:
【中文标题】ajax 发布后的 Phpmyadmin 奇怪的字符【英文标题】:Phpmyadmin weird characters after ajax post 【发布时间】:2018-12-29 13:25:06 【问题描述】:我将一些数据从 php 表单插入到数据库中。当我输入希腊字符时,数据库显示奇怪的字符。
我的 html 中有 charset="utf-8"
我尝试解码帖子值,然后从奇怪的字符中得到它给我????
$.ajax(
url:postURL,
method:"POST",
data:$('#add_name').serialize(),
type: 'json',
success:function(data)
i=1;
var spot = document.getElementById('spot_name').value;
window.location.href = "<?php echo base_url("index.php/Spot_preview/spot_preview/");?>"+spot;
);
php
foreach ($_POST["date"] as $key => $date)
$dur =$_POST['spot_duration'];
$cat = $_POST['category'][$key];
$price = $dur * $cat;
$spot_name = ($_POST['spot_name']);
$sql = "INSERT INTO spot(spot_duration,spot_type,spot_name,spot_link,customer_name,spot_date,spot_show,spot_time,spot_price,spot_category) VALUES ('".$_POST['spot_duration']."','".$_POST['spot_type']."','".$spot_name."','".$_POST['file_name_helper']."','".$_POST['customer_name']."','".$date."','".$_POST['show'][$key]."','".$_POST['time'][$key]."',$price,'".$_POST['category'][$key]."')";
$mysqli->query($sql);
【问题讨论】:
排序规则设置为什么? @comphonia utf8-unicode-ci 尝试在 phpmyadmin 设置中将其更改为 greek_general_ci 我做到了,仍然得到奇怪的字符。如果我不使用 ajax 而只是通过 php 提交表单,则数据将正确存储。所以我认为它与 ajax 帖子而不是数据库有关 如果您将表单序列化为 JSON,则必须解析数据并从中构建 SQL 查询。看不到后端代码也忍不住 【参考方案1】:更改您的 contentType 以支持不同的字符集:
dataType: 'json',
contentType: "application/json; charset=utf-8",
编辑: .. 我自己尝试并测试过,发现 ajax 请求完全没有问题,它发送的数据非常好,但是收到后问题出在服务器端。
你必须在你的方法中这样设置 php 标头:
header('Content-Type: application/json; charset=utf-8');
我已发送此文本 ΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΛλΜμΝν
并在使用 charset utf-8 设置标题后正确接收并回显它。
【讨论】:
如果我添加这些行,它不会发送数据 @Spy .. 它的dataType
不是 type
.. 再试一次,给我看你的新代码。
我编辑了代码。我添加了这些行,如果我删除 contentType 行,它只会发送数据。但它仍然可以将它们保存在数据库中
在将它们保存到数据库之前回显它们怎么样,它也有问题吗? .. 告诉我来自 ajax 帖子的标题是否正确。
当我添加你的行时,它不会进行重定向。我无法回应他们【参考方案2】:
尝试使用 serializeArray()
从帖子数据创建 JSON。添加了一个用于调试的 console.log。
$('.submitBtn').click(function(e)
e.preventDefault();
var sdata = $('#add_name').serializeArray();
console.log(fdata);
$.ajax(
url:'',
method:"POST",
data:fdata,
type: 'json',
success:function(data)
i=1;
var spot = document.getElementById('spot_name').value;
window.location.href = "<?php echo base_url("index.php/Spot_preview/spot_preview/");?>"+spot;
);
)
【讨论】:
以上是关于ajax 发布后的 Phpmyadmin 奇怪的字符的主要内容,如果未能解决你的问题,请参考以下文章