我正在尝试使用ajax请求将输入的文本传递给控制器。但是当我试图执行JS文件时,我得到错误“Uncaught TypeError:无法设置null的属性'值”..
这是HTMLcode:
<form action="">
<input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />
<input type="button" class="searchbox_submit1" name="submit" value="text" onClick="javascript:getSearchText();">
</form>
这是JS代码:
function getSearchText() {
var searchText = document.getElementByName("search").value;
h_url=document.getElementById("u").value;
var theURL = h_url+'search_all/' + deptid + '/' + searchText + '/1';
$.ajax({
url : theURL,
fail: function(){
},
success : function() {
},
error:function(){
}
});
}
请帮我解决这个问题。
答案 0 :(得分:15)
您没有ID为u
的元素。这就是错误发生的原因。
请注意,全局变量document.getElementById("u").value
表示您尝试获取名称为u
且未在代码中定义的input元素的值。
答案 1 :(得分:5)
问题可能在于执行代码。如果你是执行JavaScript的文档的头部,即使你有一个id =&#34; u&#34;在你的网页中,代码在DOM加载完成之前执行,因此HTML还没有真正存在......你可以通过将代码移动到结束html标记上方的页面末尾来解决这个问题。这是使用jQuery的一个很好的理由。
答案 2 :(得分:3)
问题在于,您还没有任何ID为u
的元素,因此您调用的内容并不存在。
要解决这个问题,你必须为元素添加一个id。
<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />
而且我也看到你为输入添加了一个值,所以这意味着输入不是空的,它将包含 text 。结果placeholder
无法显示。
最后有一个警告,W3Validator会说因为&#34; /&#34;到底。 :
对于当前文档,验证器解释字符串,例如根据遗留规则打破大多数作者的期望,从而导致混淆来自验证器的警告和错误消息。此解释由HTML 4文档或其他基于SGML的HTML文档触发。要避免这些消息,只需删除&#34; /&#34;在这种情况下的角色。注意:如果您希望&lt; FOO /&gt; 被解释为 XML兼容&#34;自我关闭&#34;标记,然后您需要使用 XHTML 或 HTML5 。
总之,它说你必须删除斜线。只需写下:
<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item...">
答案 3 :(得分:2)
我知道我对这个答案来说太迟了,但我希望这会对其他面临和将要面对的人有所帮助。
正如您所写,h_url是全局变量,如var = h_url;
,因此您可以在文件的任何位置使用该变量。
h_url=document.getElementById("u").value;
这里h_url包含用户键入的搜索框文本值的值。
的document.getElementById( “U”);
这是表单字段的标识符,其中包含一些特定的ID
。
没有id
<input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />
使用id
<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />
当您点击提交时,会尝试从document.getElementById("u").value;
获取值,这在语法上是正确的,但您尚未定义ID,以便返回null
。
因此,请确保在使用表单字段时首先定义该ID并执行其他任务信函。
我希望这对您有所帮助,永远不会出现Cannot set property 'value' of null
错误。
答案 4 :(得分:1)
似乎是这个功能
h_url=document.getElementById("u").value;
你可以帮助自己使用一些'console.log'来查看哪个对象是空的。
答案 5 :(得分:1)
h_url=document.getElementById("u")
此处为空
不存在id为u
答案 6 :(得分:1)
如果有人因此问题登陆此页面,我发现如果您的表单准备就绪之前您的JavaScript在HEAD中运行,则会发生此错误。将JavaScript移动到页面底部可以根据我的情况修复它。
答案 7 :(得分:0)
由于该元素在js中不可见,因此出现此错误,请尝试从UI检查元素并将其粘贴到javascript文件中:
之前:
document.getElementById('form:salesoverviewform:ticketstatusid').value =topping;
之后:
document.getElementById('form:salesoverviewform:j_idt190:ticketstatusid').value =topping;
Divya Akka的积分.... :)