我有一个基于AJAX的应用程序,它根据用户输入更新表单中的文本字段。文本字段定义如下:
<%= form.text_field :queue, {:class => "queue_class", :id => "queue", :size => 40} %>
Javascript代码如下:
document.getElementById('queue').value = <%= @returned_value %>
如果在控制器中,我将@returned_value设置为一个数字,如:
@returned_value='77777777777'
然后工作正常。但是,如果我将其设置为字符串值,如:
@returned_value='abcxyz'
然后它不起作用,文本字段没有更新,我没有得到任何错误信息,它就像它什么都没做。
我也试过这个:
document.getElementById('queue').innerHTML = <%= @returned_value %>
但它不适用于任何返回值,无论是@returned_value='77777777777'
还是@returned_value='abcxyz'
有人可以指点我在这里缺少什么吗?
答案 0 :(得分:2)
您需要引用JavaScript中的字符串:
document.getElementById('queue').innerHTML = '<%= @returned_value %>';
数字通过.toString()
强制转换为字符串,但是不带引号的字符串会引发解析器错误。
答案 1 :(得分:1)
您在ERb表达式周围缺少引号:
document.getElementById('queue').value = '<%= @returned_value %>';
(它也应该被JavaScript转义。)
数字是没有引号的合法JavaScript表达式。任意字符串不是; JS将尝试将其解析为表达式(引用)以及与JS相关的字符串中的其他内容。
答案 2 :(得分:0)
javascript代码生成为一个字符串,稍后由javascript解释器传递。从而,。如果你生成字符串,你必须在它周围加上引号:
document.getElementById('queue').value = '<%= @returned_value %>'