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

20

コードが実行されている場所で問題が発生する可能性があります。JavaScript を実行するドキュメントの head にいる場合、Web ページに id="u" を持つ要素がある場合でも、DOM の読み込みが完了する前にコードが実行されるため、HTML はまだ実際には存在しません。 .. コードをページの末尾の html タグのすぐ上に移動することで、これを修正できます。これは、jQuery を使用する正当な理由の 1 つです。

于 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 互換の「自己終了」タグとして解釈されることが予想される場合は、 XHTMLまたはHTML5を使用する必要があります。

結論として、スラッシュを削除する必要があると言われています。これを書くだけです:

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item...">
于 2015-11-30T19:53:06.603 に答える