给出以下内容:
其中data
是作为AJAX值接收的字符串,数据的值为'good':
console.log data # good
console.log typeof data # string
console.log typeof 'data' # string
if data is 'good'
console.log 'test' # NOTHING!!!
我不明白......
让我想要好的'JavaScript回来......
建议后的更完整的例子:
以下不起作用......
$('#profile_slug').keyup(()->
if $(this).val() != original_slug
value = encodeURIComponent $(this).val()
console.log value
$.get('/live_validate/slug?slug='+value, (data)->
console.log data
console.log typeof data
console.log typeof 'data'
`
if (data == 'good') {
console.log('test');
}
`
console.dir data
console.dir 'good'
good
No Properties
good
No Properties
控制器
if @slug.nil?
@message = "good"
else
@message = "bad"
end
视图
!= @message
的CoffeeScript
new_data = data.replace /^\s+|\s+$/g, ""
结果
相同的sh * t。
这段代码最终成为了我所需要的东西,起初它对我所做的其他事情都不起作用,但它是拼图中的最后一块,让我确保之前没有看不见的空格或者在收到的字符串之后。
$.get('/live_validate/slug?slug='+value, (data)->
# console.log data
stripped_data = data.replace /^\s+|\s+$/g, ""
# console.log encodeURIComponent data
# console.log (data.charCodeAt(i) for i in [0...data.length])
if stripped_data is 'good'
$('#profile_slug').addClass('valid-field')
$('#profile_slug').removeClass('invalid-field')
else if stripped_data is 'bad'
$('#profile_slug').addClass('invalid-field')
$('#profile_slug').removeClass('valid-field')
答案 0 :(得分:2)
这很奇怪,但我的猜测是比较中的两个'good'
字符串中的一个使用的Unicode字符与您期望的ASCII字符相似但不相等。
试试这个:
console.log (data.charCodeAt(i) for i in [0...data.length])
当data = 'good'
时,我
[ 103, 111, 111, 100 ]
答案 1 :(得分:0)
它最终成为ajax响应字符串末尾的一个隐形字符...谢谢大家!