23

我正在尝试使用 ajax 请求将输入的文本传递给控制器​​。但是当我尝试执行 JS 文件时,我收到了错误“Uncaught TypeError: Cannot set property 'value' of null”。

这是HTML代码:

<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(){
        }
    });
}

请帮我解决这个问题。

4

8 回答 8

29

您没有带有 id 的元素u。这就是发生错误的原因。请注意,您正在尝试获取名称为 'u' 的输入元素的值,并且它没有在您的代码中定义。

于 2013-04-19T08:38:26.263 回答
20

问题可能在代码被执行的地方。如果您在执行 JavaScript 的文档的头部,即使您的网页中有一个 id="u" 的元素,代码也会在 DOM 完成加载之前执行,因此 HTML 还没有真正存在。 .. 您可以通过将代码移动到页面末尾的 html 结束标记上方来解决此问题。这是使用 jQuery 的一个很好的理由。

于 2016-09-20T15:09:11.180 回答
6

如果有人因类似问题登陆此页面,我发现如果您的 JavaScript 在表单准备好之前在 HEAD 中运行,则可能会发生此错误。将您的 JavaScript 移到页面底部可以解决我的情况。

于 2014-07-29T14:49:26.443 回答
4

问题是您没有任何具有 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 会说因为最后的“/”。:

对于当前文档,验证器会根据传统规则解释字符串,这些规则打破了大多数作者的期望,从而导致来自验证器的令人困惑的警告和错误消息。这种解释由 HTML 4 文档或其他基于 SGML 的 HTML 文档触发。要避免这些消息,只需在此类上下文中删除“/”字符。注意:如果您希望<FOO />被解释为与XML 兼容的“自关闭”标签,那么您需要使用XHTMLHTML5

总之,它说你必须删除斜线。简单地写这个:

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item...">
于 2015-11-30T19:53:06.603 回答
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 出错。

于 2013-11-25T05:14:46.437 回答
2

伙计们这个错误是因为元素 ID 在 js 中不可见尝试从 UI 中检查元素并将其粘贴到 javascript 文件中:

前 :

document.getElementById('form:salesoverviewform:ticketstatusid').value =topping;

后 :

document.getElementById('form:salesoverviewform:j_idt190:ticketstatusid').value =topping;

归功于 Divya Akka .... :)

于 2019-05-16T10:32:53.133 回答
1

好像是这个功能

h_url=document.getElementById("u").value;

您可以使用一些“console.log”来帮助自己查看 Null 对象。

于 2013-04-19T08:38:17.580 回答
1

h_url=document.getElementById("u")此处为空

不存在 id 为的元素u

于 2013-04-19T08:39:39.043 回答