Home  >  Article  >  Backend Development  >  apache - ajax +json +php提交mysql数据库 中文乱码(wamp server 本地测试)求解?

apache - ajax +json +php提交mysql数据库 中文乱码(wamp server 本地测试)求解?

WBOY
WBOYOriginal
2016-06-06 20:08:01834browse

<code> 之前用普通表单提交注册数据的时候就没有这个问题,请问是因为使用了ajax或者是json相关的格式转换函数的时候出现的错误吗?</code>

问题如图:
apache - ajax +json +php提交mysql数据库 中文乱码(wamp server 本地测试)求解?

代码如下:

<code>$('#pro-edit-done').bind('click', function() 
    {
    //获取要传递的数据
        var prodata = {};
        prodata.lid = <?php echo $_SESSION['user_id']; ?>;
        console.log(prodata.lid);
        prodata.id = $("#pro_id").val();
        prodata.name = $("#pro_name").val();
        var data = JSON.stringify(prodata);
        console.log(data); 
        $.ajax
        ({  
        type: "POST",  
        url : "./pro-edit-php.php",  
        data: {data}, 
        success:function(data)
        {
        console.log(data);
        $('.pro-name').text(prodata.name);
        }
        });
    });
});

php文件:
</code>
<code> <?php session_start();
header("Content-Type:text/html;charset=utf-8");
$link = mysqli_connect('localhost','root','root');
$db = mysqli_select_db($link,'workon');


$data = json_decode($_POST['data']);
$id = $data->id;
$lid = $data->lid;
$name =$data->name;

$query = "insert projects (proj_name,proj_leader_id) values ('$name','$lid')";
$tes_query = mysqli_query($link,$query); 
if ($tes_query) {
    echo $name;
}

?>

之前用普通表单提交注册数据的时候就没有这个问题,请问是因为使用了ajax或者是json相关的格式转换函数的时候出现的错误吗?</code>

回复内容:

<code> 之前用普通表单提交注册数据的时候就没有这个问题,请问是因为使用了ajax或者是json相关的格式转换函数的时候出现的错误吗?</code>

问题如图:
apache - ajax +json +php提交mysql数据库 中文乱码(wamp server 本地测试)求解?

代码如下:

<code>$('#pro-edit-done').bind('click', function() 
    {
    //获取要传递的数据
        var prodata = {};
        prodata.lid = <?php echo $_SESSION['user_id']; ?>;
        console.log(prodata.lid);
        prodata.id = $("#pro_id").val();
        prodata.name = $("#pro_name").val();
        var data = JSON.stringify(prodata);
        console.log(data); 
        $.ajax
        ({  
        type: "POST",  
        url : "./pro-edit-php.php",  
        data: {data}, 
        success:function(data)
        {
        console.log(data);
        $('.pro-name').text(prodata.name);
        }
        });
    });
});

php文件:
</code>
<code> <?php session_start();
header("Content-Type:text/html;charset=utf-8");
$link = mysqli_connect('localhost','root','root');
$db = mysqli_select_db($link,'workon');


$data = json_decode($_POST['data']);
$id = $data->id;
$lid = $data->lid;
$name =$data->name;

$query = "insert projects (proj_name,proj_leader_id) values ('$name','$lid')";
$tes_query = mysqli_query($link,$query); 
if ($tes_query) {
    echo $name;
}

?>

之前用普通表单提交注册数据的时候就没有这个问题,请问是因为使用了ajax或者是json相关的格式转换函数的时候出现的错误吗?</code>

连接成功后mysql进行一次set names utf8

在php文件中打印一遍var_dump $_POST接收到的数据看看有错没,然后检查数据库的编码charset是utf8还是别的,保证三码合一

  1. 前端获取到的数据是乱码的吗?

  2. 后端接收到的数据是乱码吗?

  3. 插入数据库前的数据是乱码吗?

逐步锁定产生乱码的地方,进行检查;

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn