[英]jQuery ajax parse JSON data error
我在以下代码中遇到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);
我尝试环顾四周,但没有找到解决方案。 这些是我已采取的步骤。
确保JSON数据正确-通过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
错误Uncaught SyntaxError: Unexpected end of input
错误。
感谢有关此问题的任何帮助。 任何想法是什么问题?
我遇到了相同的问题,但根本原因不同。 在我的API控制器中,
public HttpResponseMessage Invite(Invitation invitation)
{
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
解决该问题的方法是添加响应消息:
var response = Request.CreateResponse(HttpStatusCode.OK, "invitation sent");
这为我的ajax方法提供了希望解析的预期输入。
听起来您需要应用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>
您的服务器是否指定了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.
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.