使用ajax响应进行奇怪的编码

时间:2012-05-23 13:48:10

标签: php javascript jquery html character-encoding

我需要将一个带有Ajax函数的字符串从Jquery发送到我的javascript文件。问题是我需要收到一串奇怪的问号/菱形块。

         (function( $ ) 
 {
  $.fn.CallPhpClass = function(className, functionName, parameters, destination)
  {
      return this.each(function()
      {
        if (destination === undefined) {
            destination = $(this);
        };

        $.ajax({
        type : 'POST',
        url : 'php/executer.php',
        data : { className : className, functionName : functionName , parameters : parameters},
        dataType:'text',
        cache: false,
        success : function(data) {
            if (className == "User" && functionName == "logout")
            {
                getMenu();
                return;
            }
            if (className == "User" && functionName == "login")
            {
                getMenu();
                return;
            }
            if (className == "User" && functionName == "lastView")
            {
                $('#main-content').CallPhpClass(data, 'view');
                return;
            }
            if (data.search('alert alert-error') != -1 || data.search('alert alert-success') != -1)
            {
                $('#main-content').CallPhpClass('User', 'lastView');
                destination = $('#error-box');
            }

            if(destination != false)
            {
                destination.html(data);
            }

        },
        error : function(data) {
            console.info(data);
        }
    });
});

}
})

设置类的代码是:

            if (className == "User" && functionName == "lastView")
            {
                $('#main-content').CallPhpClass(data, 'view');
                return;
            }

用萤火虫我收到了:

firebug view http://s7.postimage.org/xq4euz7xn/Naamloos.png

所有字符集都是UTF-8,我不知道我做错了什么!

有人可以帮助我吗?

亲切的问候,

3 个答案:

答案 0 :(得分:2)

检查元标记的字符集

<meta http-equiv="content-type" content="text/html;charset=UTF-8" />

设置 executer.php 文件的响应标题

header('Content-Type: text/html; charset=UTF-8');

在发送Ajax请求时使用contentType并传递charset

$.ajax({
        type : 'POST',
        url : 'php/executer.php',
        data : { className : className, functionName : functionName , parameters : parameters},
        dataType:'text',
        cache: false,
        contentType: "application/json; charset=utf-8",
        success : function(data) {

如果仍然不起作用,请在charset标记中尝试<script>,同时包含js文件

<script type="text/javascript" src="myscripts.js" charset="UTF-8"></script> 

答案 1 :(得分:0)

在发送数据之前使用utf8_encode: http://us2.php.net/utf8_encode

答案 2 :(得分:0)

setlocale(LC_TIME, "es_ES.UTF8");

这适用于西班牙语