我在下面的代码中遇到了一个Uncaught SyntaxError: Unexpected end of input。
var dataURL = "LineChartController?tp=" + tpAtt + "&dept=" + dept + "&date=" + dateMY;
alert(dataURL);
var JSONdata = jQuery.ajax({
type: "GET",
url: dataURL,
async: false
}).responseText;
var psSeriesData2 = JSON.parse(JSONdata);我试着环顾四周,但没有找到任何解决方案。这些是我采取的步骤。
确保JSONdata正确-通过http://www.jsonlint.com/检查,并确保我已关闭所有括号
JSONdata的格式如下:
[{"Dates":["1-10","2-10","3-10","4-10","5-10","6-10","7-10","8-10"],"psScores":[78.78787878787878,79.7979797979798,78.78787878787878,78.78787878787878,78.78787878787878,79.7979797979798,79.7979797979798,76.92307692307693]}]我做的另一件事是我使用了prototype.js和其他导致错误的javascript库,
Uncaught TypeError: Object function $(element) {
if (arguments.length > 1) {
for (var i = 0, elements = [], length = arguments.length; i < length; i++)
elements.push($(arguments[i]));
return elements;
}
if (Object.isString(element))
element = document.getElementById(element);
return Element.extend(element);
} has no method 'ajax'我通过论坛搜索,发现解决方案是将$.ajax更改为jQuery.ajax,但在此之后,出现了Uncaught SyntaxError: Unexpected end of input错误。
感谢在这个问题上的任何帮助。你知道问题出在哪里吗?
发布于 2011-07-25 02:33:19
您的服务器是否指定了application/json的响应类型?如果是这样,jQuery将在返回结果之前自动解析结果。这意味着,您正在尝试解析已经解析过的内容。
尝试在调用中指定dataType,jQuery将为您预先解析结果。
如果可能,您还应该尝试异步完成此操作。
var dataURL = "LineChartController?tp=" + tpAtt + "&dept=" + dept + "&date=" + dateMY;
var JSONdata = jQuery.ajax({
type: "GET",
dataType: "json",
url: dataURL
}).done(function(jsonData){
// do something with the data, it should already be parsed
alert(jsonData.length); // your data sample is an array, see if it gets a length back
}).fail(function(xhr){
// uh oh, we failed.. you should always handle failures too.
});发布于 2013-10-17 03:15:46
我也有同样的问题,但根本原因不同。在我的API控制器中,我有
public HttpResponseMessage Invite(Invitation invitation)
{
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;这个问题的解决方案是添加一个响应消息:
var response = Request.CreateResponse(HttpStatusCode.OK, "invitation sent");这为我的ajax方法提供了它希望解析的预期输入。
发布于 2011-07-25 01:43:24
听起来您需要应用JQuery的noConflict(),以便Prototype可以保留$
示例:
<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
</script>文档:http://api.jquery.com/jQuery.noConflict/
https://stackoverflow.com/questions/6808492
复制相似问题