2013-04-19 20 views
7

Sto provando a passare il testo inserito al controller utilizzando una richiesta Ajax. Ma sto ottenendo athe errore "TypeError Uncaught: Impossibile impostare la proprietà 'valore' di null" quando ho provato ad eseguire il file JS ..Unchaught TypeError: Impossibile impostare il 'valore' della proprietà di null

Ecco la 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> 

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

Please help me per risolvere questo.

+0

possibile duplicato di [Perché jQuery o un metodo DOM come \ 'getElementById \' non trova l'elemento?] (Http://stackoverflow.com/questions/14028959/why-does-jquery-or-a- dom-method-such-as-getelementbyid-not-find-the-element) –

risposta

1

Sembra essere questa funzione

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

Ci si può aiutare con un po 'console.log' per vedere che cosa oggetto è nullo.

+0

Ho dichiarato h_url come variabile globale .... Credo che non sia un problema ... – user2218532

+1

è una funzione? Il problema non c'è ... – jondiaz

9

Non si dispone di un elemento con l'ID u. Ecco perché si verifica l'errore. Si noti che la variabile globale document.getElementById("u").value significa che si sta tentando di ottenere il valore dell'elemento di input con il nome u e non è definito nel codice.

+0

Ho dichiarato h_url come variabile globale .... Credo che non sia un problema ... – user2218532

+3

Non è il valore variabile globale.document.getElementById ("u"). cercando di ottenere il valore di input elemnet con il nome 'u' e il suo non definito nel codice. –

1

h_url=document.getElementById("u") è nullo qui

Non v'è alcun elemento esiste con id come u

+0

Ho dichiarato h_url come variabile globale .... Credo che non sia un problema da questo .. – user2218532

+0

@ user2218532: Non sono sicuro che tu capisca cosa significano. Ciò che questo errore significa è che non può impostare a 'h_url' la proprietà' value' di ciò che 'document.getElementById (" u ")' restituisce (che è 'null', che non ha una proprietà' value'), il significato di questa risposta è (beh, dovrebbe essere) corretto. –

+0

@ user2218532 ma non c'è nessun elemento con id u – PSR

2

Sapevo che io sono troppo tardi per questa risposta, ma spero che questo aiuterà ad altri che stanno affrontando e che sarà viso.

Come hai scritto h_url è una variabile globale come var = h_url; in modo che tu possa usare quella variabile ovunque nel tuo file.

  • h_url=document.getElementById("u").value; Qui h_url contengono valore del vostro valore di testo casella di ricerca qualunque utente ha digitato.

  • document.getElementById ("u"); Questo è l'identificativo del campo modulo con uno specifico ID.

  • la ricerca in campo senza id

    <input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />

  • Alter Campo di ricerca con id

    <input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />

  • Quando si fa clic su Invia, che cercherà di recuperare valore da document.getElementById("u").value; che è sintatticamente giusto, ma non hai definito id in modo che possa ret urna null.

  • Quindi, assicurati che mentre usi i campi modulo, definisci prima quell'ID e fai un'altra lettera di attività.

Spero che questo ti aiuti e non ottenga mai l'errore Cannot set property 'value' of null.

1

Nel caso in cui qualcuno sia atterrato su questa pagina per un problema simile, ho scoperto che questo errore può verificarsi se il tuo JavaScript è in esecuzione nell'HEAD prima che il tuo modulo sia pronto. Lo spostamento del tuo JavaScript nella parte inferiore della pagina lo ha risolto per la mia situazione.

+0

Buona cattura. Ma quando ho spostato la sceneggiatura verso il basso, ora non ho errori, ma ho ancora completato i campi (non del tutto vuoti). – WilliamK

2

Il problema è che non si dispone di alcun elemento con l'ID u in modo che si stia chiamando qualcosa che non esiste.
Per risolvere il problema è necessario aggiungere un ID all'elemento.

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" /> 


E ho visto anche di aver aggiunto un valore per l'input, in modo che significa l'ingresso non è vuoto e conterrà testo. Come risultato, placeholder non verrà visualizzato.

Infine c'è un avviso che W3Validator dirà a causa della "/" alla fine. :

For the current document, the validator interprets strings like according to legacy rules that break the expectations of most authors and thus cause confusing warnings and error messages from the validator. This interpretation is triggered by HTML 4 documents or other SGML-based HTML documents. To avoid the messages, simply remove the "/" character in such contexts. NB: If you expect <FOO /> to be interpreted as an XML-compatible "self-closing" tag, then you need to use XHTML or HTML5.

In conclusione si dice che è necessario rimuovere la barra. Basta scrivere questo:

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..."> 
3

il problema potrebbe in cui viene eseguito il codice. Se sei nella testa di un documento che esegue JavaScript, anche quando hai un elemento con id = "u" nella tua pagina web, il codice viene eseguito prima che il DOM abbia finito di caricare, e quindi l'HTML non esiste ancora. .. Puoi risolvere questo problema spostando il tuo codice alla fine della pagina appena sopra il tag html di chiusura. Questa è una buona ragione per usare jQuery.

Problemi correlati