asp.net mvc-ASPNET LocalStorage Json反序列化



我在一个在线模式/断开连接的应用程序上工作,并在《面向ASPNET开发人员的HTML5编程》一书中找到了一个例子。

我使用ASPNET技术MVC5。

我在控制器中反序列化数据时出错:

  public JsonResult SaveResults()
    {
        string jsonData = string.Empty;
        using (StreamReader sr = new StreamReader(Request.InputStream))
        {
            jsonData = sr.ReadToEnd();
        }
        Dictionary<string, string> data = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonData);
        SurveyDbEntities db = new SurveyDbEntities();
        User usr = new User();
        usr.FirstName = data["FirstName"];
        usr.LastName = data["LastName"];
        usr.Email = data["Email"];
        db.Users.AddObject(usr);
        db.SaveChanges();
        string userEmail = data["Email"];
        int usrId = (from item in db.Users
                        where item.Email == userEmail
                        select item.UserID).SingleOrDefault();
        data.Remove("FirstName");
        data.Remove("LastName");
        data.Remove("Email");
        foreach (string str in data.Keys)
        {
            int choiceId = int.Parse(str);
            int questionId = int.Parse(data[str]);
            Result result = new Result();
            result.QuestionID = questionId;
            result.ChoiceID = choiceId;
            result.UserID = usrId;
            db.Results.AddObject(result);
        }
        db.SaveChanges();
        return Json("success");
    }

此行显示错误

Dictionary<string, string> data = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonData);

我的jsonData(报价问题?):

{"Email":"test@aol.fr","FirstName":"test","LastName":"test","container":"<div data-questions-questionid="1" class="paddedDiv">Which programming language do you use?<br><input type="checkbox" data-choices-questionid="1" data-choices-choiceid="1"><span>C#</span><br><input type="checkbox" data-choices-questionid="1" data-choices-choiceid="2"><span>VB.NET</span><br><input type="checkbox" data-choices-questionid="1" data-choices-choiceid="3"><span>PHP</span></div><div data-questions-questionid="2" class="paddedDiv">Which of the following browsers do you use while developing websites?<br><input type="checkbox" data-choices-questionid="2" data-choices-choiceid="4"><span>IE9</span><br><input type="checkbox" data-choices-questionid="2" data-choices-choiceid="5"><span>Firefox</span><br><input type="checkbox" data-choices-questionid="2" data-choices-choiceid="6"><span>Chrome</span></div><div data-questions-questionid="3" class="paddedDiv">Which of the following tools do you use?<br><input type="checkbox" data-choices-questionid="3" data-choices-choiceid="7"><span>Visual Studio</span><br><input type="checkbox" data-choices-questionid="3" data-choices-choiceid="8"><span>Web Matrix</span><br><input type="checkbox" data-choices-questionid="3" data-choices-choiceid="9"><span>Expression Web</span></div>"}

然后错误:

{"After parsing a value an unexpected character was encountered: 1. Path 'container', line 1, position 105."}

知道问题出在哪里吗?

Javascript SubmitData

  function SubmitData(event) {
      var data = '';
      for (var i = 0; i < storage.length; i++) {
        var key = storage.key(i);
        var value = storage[key];
        var pair = '"' + key + '":"' + value + '"';
        data = data + pair + ",";
      }
      if (data.charAt(data.length - 1) == ',') {
        data = data.substring(0, data.length - 1)
      }
      data = '{' + data + '}';
      $.ajax({
        type: "POST",
        url: "/Home/SaveResults",
        contentType: "application/json; charset=utf-8",
        data: data,
        dataType: "json",
        success: function(results){
          alert('Results saved!');
          window.localStorage.clear();
        },
        error: function (err) {
          alert(err.status + " - " + err.statusText);
        }
      })
    }

查看您的JSON数据:

"container":"<div data-questions-questionid="1

属性"container"的值正好在"1"之前结束所以是的。。这是一个编码错误,甚至我不知道是否还有其他问题。

最新更新