我遇到过这里描述的类似问题(以及其他地方) - 在ajax回调中,我得到一个似乎没问题的xmlhttp.responseText(当我提醒它时 - 它显示正确的文本) - 但是当使用'if'时将它与字符串进行比较的语句 - 它返回false.
(我也是编写服务器端代码返回该字符串的人) - 经过多次研究字符串后 - 我发现该字符串有一个"隐形字符"作为它的第一个字符.未显示的角色.如果我将其复制到记事本 - 然后删除第一个字符 - 在再次按Delete之前不会删除它.
我在xmlhttp.responseText中为返回的字符串做了一个charCodeAt(0).它返回65279.
谷歌搜索它显示它是某种UTF-8控制字符,应该设置"big-endian"或"small-endian"编码.
所以,现在我知道问题的原因了 - 但是......为什么这个角色会被回应呢?在源PHP我只是使用
echo 'the string'...
Run Code Online (Sandbox Code Playgroud)
它显然以某种方式输出[chr(65279)]字符串......
为什么?我怎么能避免它呢?
在我的ajax代码中:
$.ajax({
url: CI_ROOT + "isUserExist",
type: "GET",
data: {recepient: recepient},
success: function(r) {
console.log(r)
}
})
Run Code Online (Sandbox Code Playgroud)
给我一个输出[{"records":"1"}] [{"records":"1"}]所以我通过在我的ajax代码中添加dataType:"json"将其解析为json .但是当我解析它时,它不会给我输出但是在try-catch-block上有错误.
如何将其显示为对象?在我的PHP代码中,我这样做:
for ($i = 0; $i < count($matches[0]); $i++) {
echo json_encode($this->searchmodel->doesUsersExists($matches[0][$i]));
} //gets the user id of the user from a given string.
Run Code Online (Sandbox Code Playgroud)