JSON.parse:意外的字符错误,数据库查询列表没问题,但列表数据失败

时间:2012-12-11 11:19:42

标签: c# ajax json

我的ajax功能:

function fetchData(varUrl, varFunc, varData) {
 if (varData == undefined) varData = "";
 var options = {
    type: "POST",
    url: varUrl,
    data: varData,
    contentType: "application/json;charset=utf-8",
    dataType: "json",
    timeout: 8000,
    cache: false,
    beforeSend: ShowLoading(),
    success: varFunc,
    complete: HideLoading(),
    error: function (x, t, m) {
        if (t === "timeout") {
            alert("got timeout");
        } else {
            alert(t+"\r\n\r\n"+m);
        }
    }
  };
  //execute the ajax call and get a response
  var request = $.ajax(options);
}

  function funcA(data){
     $.each(data, function (i, item) {...}
  }

  function funcB(data){
     $.each(data, function (i, item) {...}
  }

C#代码:

    public ActionResult AjaxA()
    {
        try
        {
            using (var db = new MvcContext())
            {
                var history = from h in db.Histories.Where(h => h.Id == 2)
                return this.Json(history.ToList());
            }
        }
        catch(Exception)
        {
            return this.Json("");
        }
    }

     public ActionResult AjaxB()
    {
        var history = new List<MyDataType>();
        history.Add( new MyData(...));
          ...
        history.Add( new MyData(...));
        return this.Json(history);
    }

1)如果我使用fetchData(“AjaxA”,funcA)来获取数据,那就没关系

2)如果我使用fetchData(“AjaxB”,funcB)获取数据,则失败并获得错误

JSON.parse:意外的字符错误

但在这种情况下,firebug也可以获得良好的json数据。

json数据[{“x”:39,“y”:115.5,“数据”:16.743013706957576},{“x”:39.5,“y”:115.5,“数据”:12.353 109643128887}] < / p>

1 个答案:

答案 0 :(得分:1)

Parse error on line 10:
...      "Data": 12.353‌​109643128887    }
-----------------------^
Expecting '}', ',', ']'

在这里,我已经在http://jsonlint.com/

上验证了JSON

当我在文本编辑器上复制JSON时,会将几个字符转换为?,请检查一下。它看起来像编码问题。

[{"x":39,"y":115.5,"Data":16.743013706957576},{"x":39.5,"y":115.5,"Data":12.353??109643128887}]