在附加文本时,jQuery将常规空格转换为非中断空格

时间:2011-08-16 21:02:46

标签: javascript jquery html css json

我有一个jQuery AJAX回调函数,它将检索到的JSON数据作为帮助文本添加到弹出div中。以下是相关代码:

ajaxCallback = function(data, status, request) {
    if('string' == typeof data) {
        data = convertStringToJSON(data);
    }

    for(var id in data.fields) {
        var field = data.fields[id];
        $('#' + id + 'Help').text(field.description);
    }
};

function convertStringToJSON(string) {
    if('undefined' == typeof JSON) {
        return eval('(' + string + ');');
    } else {
        return JSON.parse(string);
    }
}

我使用Firebug来破解回调,因此我可以检查数据,并发现没有任何问题。然而,当jQuery将“field.description”附加到所选元素时,它会将文本中的所有空格转换为不间断的空格(& nbsp;)。这打破了弹出窗口的布局:文本溢出固定宽度。我甚至使用Firebug手动将非破坏空间转换为常规空间并修复了文本,因此我知道这不是我的CSS的问题。 (只是为了确定,我检查了div的白色空间属性,它是“正常的”。)

我尝试使用不同的方法来附加文本:.append()和.html()而不是.text(),但那些结果相同。

我正在通过Google使用jQuery 1.6.2:https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js

我应该解释一下,我正在从使用json_encode()的PHP脚本中检索我的JSON,并且文本中有一些带重音的西班牙语字符。我看到json_encode()将重音字符转换为Unicode字符(\ u chars),但在最终结果中显示的那些没有问题。

(注意:我现在意识到jQuery有一个内置函数可以将纯文本转换为JSON,所以convertStringToJSON函数已经过时了。我当时没有意识到这一点,也许这就是我问题的根源?)

编辑:我的不好,这是PHP的一个问题。我在这里重述了这个问题:PHP utf8_encode() converts spaces to non-breaking spaces

0 个答案:

没有答案