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

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

WBOY
WBOYOriginal
2016-06-06 20:08:01832Durchsuche

<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. 插入数据库前的数据是乱码吗?

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn