请帮助解释为什么我通过jquery调用ajax会破坏我的数据?我已经设置了我的mysql数据库以使用 utf8_general_ci ,
有什么想法吗?我也尝试回显我的$查询,它在实际发送到数据库之前提示我已经丢失的字符
感谢
答案 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”并将其转换为对象。
希望这有帮助