SYNTAX FOUT: Onverwachte Token & LT;

Ik heb veel dingen geprobeerd en er is geen manier, verschijnt altijd deze fout
Ik heb geprobeerd om slechts één optie te gebruiken om te zien of gepasseerd, de roep van jQuery veranderde, maar niet.

Ik keek op verschillende plaatsen op internet over deze fout, maar kon niet oplossen of begrijpen waarom het gebeurt.
Op mijn pc werkt het gebruik van Easyphp perfect, maar wanneer ik online doe, werkt niet.

Syntaxisfout: onverwachte token & lt;

Hier is mijn code:

$(function(){
$('#salvar').click(function(){
    var key = 'salvar';
    var title = $('#title').val();
    var opcao1 = $('#opcao1').val();
    var opcao2 = $('#opcao2').val();
    var opcao3 = $('#opcao3').val();
    var opcao4 = $('#opcao4').val();
    var opcao5 = $('#opcao5').val();
    var opcao6 = $('#opcao6').val();
    if(title.length > 0){
        if(opcao2.length > 0){
            $('#resposta').removeClass().html('Salvando a enquete...<br clear="all"><br><img src="images/switch-loading.gif" />');
            $.ajax({
            type : 'POST',
            url : 'funcoes/enquete_adm.php',
            dataType : 'json',
            data: {key:key,title:title,opcao1:opcao1,opcao2:opcao2,opcao3:opcao3,opcao4:opcao4,opcao5:opcao5,opcao6:opcao6},
            success : function(data){
                if(data.sql == 'ok'){
                        $('#resposta').addClass('success-box').html('Enquete Salva!').fadeIn(1000);
                        $('#control').fadeOut();
                    }else if(data.sql == 'error'){
                        $('#resposta').addClass('info-box').html('Ops, aconteceu um erro. Por favor, tente novamente').fadeIn(1000);
                    }
                },
            error: function (XMLHttpRequest, textStatus, errorThrown) {    
                alert("XMLHttpRequest " + XMLHttpRequest[0]);alert(" errorThrown: " + errorThrown);alert( " textstatus : " + textStatus);    
            }
            });
        }else{
            $('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções');
        };
    }else{
        $('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete');
    };
    return false;
});
}); // End

Antwoord 1, autoriteit 100%

Dit gebeurt meestal wanneer u een bestand opneemt of post naar een bestand dat niet bestaat.
De server retourneert een normale html-geformatteerde “404 Not Found” ingesloten met

'<html></html>' 

tags. Die eerste chevron < is geen geldige js of geldige json, daarom activeert het een onverwachte token.

Wat als je voor de zekerheid ‘funcoes/enquete_adm.php’ probeert te veranderen in een absolute url?

BEWERKEN(enkele jaren later)

De hoofdoorzaak komt mogelijk niet altijd van 404-fouten. Soms kunt u een verzoek indienen bij een API en HTML-opgemaakte fouten ontvangen. Ik ben een paar gevallen tegengekomen waarin het API-eindpunt had moeten terugkeren

{
   error: "you must be authenticated to make this request"
}

Met header 401. En in plaats daarvan kreeg ik

<html>You must be authenticated to make this request</html>

Met kop 200.

Aangezien de header 200 is, kun je niet van tevoren zien dat het verzoek is mislukt, en je zit vast om te proberen en JSON.parsehet antwoord om te controleren of het geldig is.


Antwoord 2, autoriteit 12%

Je hebt onnodige ;(puntkomma’s):

Voorbeeld hier:

}else{
        $('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções');
    };

De laatste ;na }is onjuist.

Hier nog een voorbeeld:

}else{
    $('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete');
};

Antwoord 3, autoriteit 7%

Ik vermoed dat u tekst/html-codering ontvangt als reactie op uw verzoek, dus ik denk dat het probleem is:

dataType : 'json',

probeer het te veranderen in

dataType : 'html',

Van http://api.jquery.com/jQuery.get/:

gegevenstype
Type: String
Het type gegevens dat van de server wordt verwacht. Standaard: Intelligent Guess (xml, json, script of html).


Antwoord 4, autoriteit 5%

De fout SyntaxError: Unexpected token <betekent waarschijnlijk dat het API-eindpunt geen JSON heeft geretourneerd in de hoofdtekst van het document, bijvoorbeeld vanwege een 404.

In dit geval verwacht het een {(begin van JSON); in plaats daarvan vindt het een <(begin van een kopelement).

Succesvolle reactie:

<html>
  <head></head>
  <body>
    {"foo": "bar", "baz": "qux"}
  </body>
</html>

Niet gevonden reactie:

<html>
  <head></head>
  <body>
    <h1>Not Found</h1>
    <p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>
  </body>
</html>

Probeer de URL van het gegevenseindpunt in uw browser te bezoeken om te zien wat er wordt geretourneerd.


Antwoord 5, autoriteit 2%

Ik had een soortgelijk probleem en mijn probleem was dat ik javascript verzond om consoleberichten weer te geven.

Zelfs toen ik naar het bestand in mijn browser keek (niet via de applicatie), toonde het precies zoals ik het had verwacht (bijv. de extra tags werden niet getoond), maar er waren wel te zien in de html/tekstuitvoer en proberen te worden geparseerd.

Ik hoop dat dit iemand helpt!


Antwoord 6, autoriteit 2%

Ik vermoed dat een van je scripts een bronkaart-URLbevat. (Verkleinde jQuery bevat bijvoorbeeld een verwijzing naar een bronkaart.)

Wanneer u de Chrome-ontwikkelaarstools opent, probeert Chrome de bronkaart op te halen van de URL om foutopsporing te vergemakkelijken. De bronkaart bestaat echter niet echt op uw server, maar u ontvangt in plaats daarvan een gewone 404-pagina met HTML.


Antwoord 7

Deze fout kan ook ontstaan door een JSON AJAX-aanroep naar een PHP-script met een fout in de code. Servers zijn vaak ingesteld om PHP-foutinformatie te retourneren die is opgemaakt met html-opmaak. Dit antwoord wordt geïnterpreteerd als ongeldige JSON, wat resulteert in de “onverwachte token <” Ajax-fout.

Als u de PHP-fout met Chrome wilt bekijken, gaat u naar het deelvenster Netwerk in de webinspector, klikt u op het PHP-bestand aan de linkerkant en klikt u op het tabblad Reactie.


Antwoord 8

Bij het posten via ajax is het altijd een goed idee om eerst normaal in te dienen om ervoor te zorgen dat het aangeroepen bestand altijd geldige gegevens retourneert (json) en geen fouten met html-tags of andere

<form action="path/to/file.php" id="ajaxformx">

Door x toe te voegen aan de id-waarde, zal jQuery het niet verwerken.

Zodra u zeker weet dat alles in orde is, verwijdert u de xuit id="ajaxform"en de lege action-attribuutwaarde

Zo heb ik een paar minuten geleden dezelfde fout voor mezelf opgelost 🙂


Antwoord 9

Ik had ook syntax error: unexpected token <tijdens het posten van een formulier via ajax. Daarna gebruikte ik curl om te zien wat het teruggeeft:

curl -X POST --data "firstName=a&lastName=a&[email protected]&pass=aaaa&mobile=12345678901&nID=123456789123456789&age=22&prof=xfd" http://handymama.co/CustomerRegistration.php

Ik kreeg zoiets als dit als antwoord:

<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>3</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>4</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>7</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>8</b><br />

Dus ik hoefde alleen maar het logniveau te wijzigen in alleen fouten in plaats van waarschuwingen.

error_reporting(E_ERROR);

Antwoord 10

ik heb alle meegeleverde JS-paden gecontroleerd

Voorbeeld
Wijzig dit

<script src="js/bootstrap.min.js" type="text/javascript"></script>

NAAR

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" type="text/javascript"></script>

Antwoord 11

Het verwijderen van deze regel uit mijn code loste mijn probleem op.

header("Content-Type: application/json; charset=UTF-8"); 

Antwoord 12

Ik gooi dit hier even in omdat ik dezelfde fout tegenkwam, maar om HEEL verschillende redenen.

Ik dien via node/express/jade en had een oud jade-bestand overgezet. Een van de regels was om niet te vervelen als Typekit faalde:

script(type='text/javascript')
  try{Typekit.load();}catch(e){}

Het leek onspannend genoeg, maar ik besefte eindelijk dat voor Jade-scriptblokken waar je inhoud toevoegt die je nodig hebt .:

script(type='text/javascript').
  try{Typekit.load();}catch(e){}

eenvoudig, maar lastig.


Antwoord 13

Negeer gewoon parameter passeren als een fout in Java-scriptfuncties

ex:

function getCities(stateId,locationId=false){    
    // Avoid writting locationId= false kind of statements
   /*your code comes here*/
 }

Vermijd het schrijven van de locatie = valse soort verklaringen, omdat dit de fout in chroom en dwz

geeft


Antwoord 14

Dit gebeurde met mij met een pagina die is geladen via een iframe. De IFRAME SRC-pagina had een scriptreferentie van 404. Natuurlijk kon ik de scriptreferentie niet vinden in de bovenliggende pagina, dus het kostte me een tijdje om de boosdoener te vinden.


Antwoord 15

Zorg ervoor dat u niet de JQuery-code tussen de

& lt; Script & GT;
& LT; / Script & GT;

Zo ja, verwijdert u en de code zal prima werken, het werkte in mijn geval.


Antwoord 16

Voor mij werkte geen van de bovenstaande oplossingen, dus ik moest de bron van mijn probleem diep onderzoeken en ik eindigde op router path.

Controleer de manier waarop uw paden zijn
{ path:"/register/onboard" ... }Werkte niet, maar { path:"/register_onboard" ... }deed. Dus ik weet niet waarom het misschien een tas is.

Other episodes