语法错误:意外的标记<
我已经尝试了很多东西,没有办法,总是出现这个错误我试图使用只有一个选项,看看是否通过,改变了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>
如果这样删除和代码将正常工作,它在我的情况。