繁体   English   中英

jQuery ajax解析JSON数据错误

[英]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>

文档: http : //api.jquery.com/jQuery.noConflict/

您的服务器是否指定了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM