Jquery Ajax Call破坏了我的数据

时间:2011-01-19 15:00:05

标签: php jquery mysql ajax


请帮助解释为什么我通过jquery调用ajax会破坏我的数据?我已经设置了我的mysql数据库以使用 utf8_general_ci

  1. 我已经尝试通过phpmyadmin将项目添加到我的mysql数据库中,中文字符已经完成且没有任何更改。
  2. 我也尝试创建一个简单的php页面来插入相同的中文字符集,运行php页面并检查phpmyadmin中的输出..再次对同一组没有任何更改
  3. 这次通过jquery $ .ajax插入同一组中文字符,但是首先不要发送到mysql但打印到html .. SAME设置并且没有做任何更改...
  4. 使用#2中的php页面现在使用ajax和INSERT到数据库...现在有些字符丢失并且已经更改为'???'..
  5. 有什么想法吗?我也尝试回显我的$查询,它在实际发送到数据库之前提示我已经丢失的字符

    感谢

1 个答案:

答案 0 :(得分:4)

为了解决这个问题,请尝试在ajax请求中设置ocntenttype:

...
    jQuery.ajax({
        type: "POST",
        url: "../ajax/setting",
        cache: false,
        dataType: "json",
        data: "user.id=current&update=true&user.setting=" + key + "&user.settingValue=" + escape(value),
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        beforeSend: function(x) {
            if((x) && (x.overrideMimeType))
                x.overrideMimeType("application/j-son; charset=UTF-8");
        },
...

beforeSend技巧也可能对您的情况有所帮助。我发现,根据你发送数据的方式,它可能编码方式完全不同。如果要使用charset提交长数据,请确保首先对其进行编码:

即。 submitdata是一个json字符串:

submitType = "POST";
submitdata = "data=" + encodeURIComponent(submitdata);
jQuery.ajax({
    type: submitType,
    url: url,
    cache: false,
    data: submitdata,
    dataType: "json",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    beforeSend: function(x) {
        if((x) && (x.overrideMimeType))
            x.overrideMimeType("application/j-son; charset=UTF-8");
        return true;
    },
服务器上的

我接受请求参数“data”并将其转换为对象。

希望这有帮助