语法错误:意外的标记<

我已经尝试了很多东西,没有办法,总是出现这个错误我试图使用只有一个选项,看看是否通过,改变了jquery的调用,但不是。

我在互联网上的各个地方查看这个错误,但是无法解决或理解为什么发生这种情况。 在我的电脑上使用EasyPHP的作品完美,但是当我上网不起作用。

语法错误:意外标记<

这是我的代码:

$(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 

这通常发生在包含或发布到不存在的文件时。 服务器将返回一个常规的html格式的“404 Not Found”

 '<html></html>' 

标签。 那第一个chevron <是不是有效的js也不是有效的json,因此它触发一个意外的标记。

如果您尝试将“funcoes / enquete_adm.php”更改为绝对url,那么该怎么办?

你没有必要 (分号):

示例:

  }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'); }; 

我怀疑你得到的文本/ HTML编码响应您的请求,所以我相信这个问题是:

 dataType : 'json', 

尝试改变它

 dataType : 'html', 

来自http://api.jquery.com/jQuery.get/

dataTypetypes:string服务器期望的数据types。 默认值:智能猜测(XML,JSON,脚本或HTML)。

错误SyntaxError: Unexpected token <可能意味着API端点未在其文档正文中返回JSON,例如由于404。

在这种情况下,它期望find一个{ (JSON的开始); 而是find一个< (开始标题元素)。

成功的回应:

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

未find答案:

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

尝试在浏览器中访问数据端点的URL,查看返回的内容。

我有一个类似的问题,我的问题是,我发送JavaScript来显示控制台消息。

即使当我在浏览器(而不是通过应用程序)查看文件,它显示完全如我所料(例如额外的标签不显示),但显示在HTML /文本输出,并试图成为parsing。

希望这可以帮助别人!

我怀疑你的脚本中包含一个源地图URL 。 (例如,精确的jQuery包含对源地图的引用。)

当您打开Chrome开发者工具时,Chrome会尝试从URL中获取源代码映射,以帮助进行debugging。 但是,源映射实际上并不存在于您的服务器上,而是发送了一个包含HTML的常规404页面。

这个错误也可能是由于JSON AJAX调用的代码中有一个错误的PHP脚本引起的。 服务器通常设置为返回用HTML标记格式化的PHP错误信息。 此响应被解释为无效的JSON,导致“意外的令牌<”AJAX错误。

要使用Chrome查看PHP错误,请转到Web检查器的“networking”面板,单击左侧列出的PHP文件,然后单击“响应”选项卡。

当通过ajax发布时,通常首先提交是一个好主意,以确保被调用的文件始终返回有效数据(json),并且不会出现任何与html标记或其他错误

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

通过将x添加到id值,jquery将不会处理它。

一旦你确定一切正常,然后从id="ajaxform"删除x ,然后清空action属性值

这就是我几分钟前为自己sorting相同的错误:)

我也有syntax error: unexpected token <通过ajax发布表单时。 然后我使用curl来查看它返回的结果:

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

我有这样的回应:

 <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 /> 

所以我只需要将日志级别更改为错误而不是警告。

 error_reporting(E_ERROR); 

我检查了所有包含的JSpath

示例更改此

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

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

从我的代码中删除这条线解决了我的问题。

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

只是要把这个扔在这里,因为我遇到了同样的错误,但非常不同的原因。

我通过节点/快递/玉器提供服务,并将旧的玉文件移出。 其中一条是在Typekit失败的时候,

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

这似乎无伤大雅,但我终于意识到,对于你添加内容的玉石脚本块,你需要一个.

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

简单,但棘手。

只是忽略parameter passing为一个错误的Java脚本函数

例如:

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

避免写入locationId = falsetypes的语句,因为这会给铬和IE中的错误

这发生在我身上,通过iframe加载页面。 iframe src页面有一个404脚本引用。 显然我找不到父页面的脚本引用,所以花了我一段时间才find罪魁祸首。

确保你不包括jquery之间的代码

<script> </ script>

如果这样删除和代码将正常工作,它在我的情况。