2010-09-02 31 views
38

Per qualche ragione, sto ricevendo questo messaggio di errore:Errore: SyntaxError Uncaught: token imprevisto <

Uncaught SyntaxError: Unexpected token < 

Per questa riga di codice:

title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 

In questo contesto:

$(document).ready(function() { 
    $('#infobutton').click(function() { 
     $('#music_descrip').dialog('open'); 
    }); 
     $('#music_descrip').dialog({ 
      title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 
      autoOpen: false, 
      height: 375, 
      width: 500, 
      modal: true, 
      resizable: false, 
      buttons: { 
       'Without Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'no', { expires: 365 * 10 }); 
       }, 
       'With Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'yes', { expires: 365 * 10 }); 
       } 
      } 
     }); 
    }); 

Penso che tutto dovrebbe essere buono per andare, ma non capisco perché lo < stia in qualche modo tirando fuori questo ..

whoops, ho dimenticato di mostrare dove sta succedendo! Il mio male,

http://www.marioplanet.com/index.asp

Tutte le idee?

+3

Io né io né io capisco Forse ti piacerebbe condividere del codice e spiegare cosa stai cercando di fare, ecc ...? Mostrare l'errore è una cosa, ma se vuoi capire da dove viene questo errore, dobbiamo vedere cosa lo sta causando (che è indubbiamente il tuo codice). Anche il tagging della tua domanda con il tag 'error' non fornisce molte informazioni preziose. –

+2

Non è proprio una linea di codice. Voglio dire, non puoi eseguirlo. Almeno dacci un contesto sufficiente per vedere una dichiarazione completa. – recursive

+0

K, il mio male, ho cercato di dare un po 'più di contesto, e ho dimenticato di dare un link, che originariamente intendevo fare .. – Qcom

risposta

37

Questo è un problema di browser piuttosto che un problema di javascript o JQuery; sta tentando di interpretare la parentesi angolare come un tag HTML.

provare a fare questo quando l'impostazione dei javascript:

<script> 
//<![CDATA[ 

    // insert teh codez 

//]]> 
</script> 

In alternativa, spostare il javascript in un file separato.

Modifica: Ahh .. con quel collegamento l'ho rintracciato. Quello che ho detto era che il problema non era affatto il problema. questo è il problema, spogliato dal sito:

<script type="text/javascript" 
    $(document).ready(function() { 
    $('#infobutton').click(function() { 
     $('#music_descrip').dialog('open'); 
    }); 
     $('#music_descrip').dialog({ 
      title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>', 
      autoOpen: false, 
      height: 375, 
      width: 500, 
      modal: true, 
      resizable: false, 
      buttons: { 
       'Without Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'no', { expires: 365 * 10 }); 
       }, 
       'With Music': function() { 
        $(this).dialog('close'); 
        $.cookie('autoPlay', 'yes', { expires: 365 * 10 }); 
       } 
      } 
     }); 
    }); 

Riuscite ad individuare l'errore? È nella prima riga: il tag <script non è chiuso. Dovrebbe essere <script type="text/javascript">

Il mio suggerimento precedente si ferma, però: si dovrebbe racchiudere script intra-targhette in un blocco CDATA, o spostarli in un file collegato separatamente.

Questo non era il problema qui, ma avrebbe mostrato il vero problema più velocemente.

+0

Oh wowwwwwww ... Grazie per il posto, ma che era piuttosto zoppo, comunque, ho spostato il js in un file separato per il codice più pulito e manutenibilità comunque. Grazie! – Qcom

+0

Riesci a cogliere tali eccezioni in jQuery? Significa, se il mio metodo di successo ottiene queste eccezioni non rilevate, mi piacerebbe prenderlo e mostrare un messaggio di errore all'utente. – noobcode

+0

@noobcode Se non strutturate correttamente la marcatura, il motore javascript fallirà miseramente, o non inizierà affatto. Come vengono gestiti gli errori nel markup sono specifici del browser e non sono sicuro che forniscano un meccanismo che è possibile collegare per fornire all'utente un messaggio di errore "Ho rovinato il sito Web che si sta tentando di visualizzare". – Randolpho

-3

Non so se hai ottenuto la risposta. Ho incontrato questo problema oggi, e ho pensato di avere una risposta giusta possibile: non mettere il file di script nella giusta posizione.

La maggior parte delle persone non soddisfa questo problema perché inserisce gli script nella directory del server direttamente. Lo incontro perché creo un collegamento del file sorgente (il file html) alla directory root del server. Non ho collegato i file di script e non so come trovarli nginx. Ma non sono caricati correttamente.

Dopo aver collegato tutti i file alla directory radice del server, il problema è stato risolto.

-1

Di solito funziona quando si modifica il nome della directory, dove si trova il file. Ha funzionato per me quando l'ho spostato da "js /" a "../js"

8

Ho avuto lo stesso identico sintomo, e questo era il mio problema, molto difficile da rintracciare, quindi spero che aiuti qualcuno .

Stavo usando JQuery parseJSON() e il contenuto che stavo tentando di analizzare in realtà non era JSON, ma una pagina di errore che veniva restituita.

9

Anche questo errore si è verificato durante lo sviluppo di un'applicazione Backbone utilizzando lo stato push HTML5 in combinazione con un htaccess che reindirizza qualsiasi file sconosciuto a index.html.

Si scopre che quando si visita un URL come /something/5, il mio /index.html veniva effettivamente servito a /something/index.html (grazie al mio .htaccess). Ciò ha avuto l'effetto di rompere tutti gli URL relativi ai miei file JavaScript (dall'interno dell'indice index.html), il che significava che avrebbero dovuto avere 404 su di me.

Tuttavia, sempre a causa del mio htacc, invece di 404'ing quando ho cercato di recuperare i file JS, hanno invece restituito il mio index.html. Pertanto al browser è stato fornito un index.html per ogni file JavaScript che ha tentato di inserire e, quando ha valutato l'HTML come se fosse JavaScript, ha restituito un errore JS a causa del numero iniziale < (dal mio tag in index.html) .

La correzione nel mio caso (dato che stavo servendo il sito da una sottodirectory) era di aggiungere un tag di base nella mia testa html.

<base href="/my-app/">

+1

Questo problema risolve il mio problema - nel mio caso ho usato - non ho mai pensato che fosse un problema di accesso! –

+0

Ho riscontrato un problema simile durante l'utilizzo di react-router con percorsi come "user /: userid". Aggiungendo il tag base davanti agli URL della mia risorsa, l'ho risolto. Grazie @ jeff-h! – Tim

+0

questo è vero, ma una conseguenza del problema più generale come descritto dalla [risposta di david.barkhuizen] (https://stackoverflow.com/a/39034617/3645375) –

4

In genere questo accade quando si sta tentando di caricare una risorsa non-html (ad esempio, il file di script libreria jQuery come tipo text/javascript) e il server, invece di restituire il risorsa JS previsto, restituisce HTML invece - tipicamente una pagina 404.

Il browser tenta quindi di analizzare la risorsa come JS, ma poiché ciò che è stato effettivamente restituito era una pagina HTML, l'analisi non riesce con un errore di sintassi e poiché una pagina HTML in genere inizia con un carattere <, questo è il carattere che è evidenziato nell'eccezione di errore di sintassi.

+0

Qualche possibilità di disabilitare questo comportamento? Non capisco perché jquery ha problemi con le risorse tag –

-1

Se si affronta questo problema solo in Chrome e in IE, ad esempio, tutto va bene, quindi basta abilitare il pulsante di controllo "Disattiva cache" in Dev Tools (F12 -> scheda "Rete") e cancellare la cronologia nel ultima ora.

Ho avuto questo problema e soprattutto la soluzione ha funzionato per me.

+1

Si prega di non pubblicare risposte identiche a più domande. Pubblica una buona risposta, quindi vota/contrassegna per chiudere le altre domande come duplicati. Se la domanda non è un duplicato, * adatta le tue risposte alla domanda. * –

-1

cercare di sostituire il testo/javascript per text/html quindi salvare la nota e aggiornare il browser poi riportarlo a text/javascript .. Io non lo so, ma per ragioni sconosciute questo funziona con me .. Sto cercando e copia-incolla e ho annullato per sbaglio quello che sto digitando quindi boom kablooey ha funzionato 0. O dal modo in cui sono solo noob .. scusa ho solo pensato che potesse essere d'aiuto anche se ..

Problemi correlati