【问题标题】:Uncaught InvalidStateError in JSON.stringifyJSON.stringify 中未捕获的 InvalidStateError
【发布时间】:2013-09-07 04:48:34
【问题描述】:

我读过这个其他帖子,但不好:Put data into JSON with Jquery

每当我尝试 JSON.stringify 一个对象数组时,我都会收到一条错误消息:

Uncaught InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable. 

这是我的 JS:

            var responseItems = [];

            var keynoteContainer = $('div.keynote-questions');
            var eventQuestionContainer = $('div.event-questions');
            var sessionContainer = $('div.session-questions');
            var eventId = $('#Evaluation-Event-Id').val();

            keynoteContainer.children().each(function (index, el) {
                var element = $(el);

                var id = "-1";
                var parentId = element.find('input[type=hidden]').val();
                var parentType = "Keynote";
                var responseValue = element.find('.response-item-slider').slider("option", "value");
                var responseText = "";

                var response = { "Id": id, "EventId": eventId, "ParentId": parentId, "ParentType": parentType, "ResponseValue": responseValue, "ResponseText": responseText };
                responseItems.push(response);
            });                    

            eventQuestionContainer.children().each(function (index, el) {
                var element = $(el);

                var id = "-1";
                var parentId = element.find('input[type=hidden]').val();
                var parentType = "EventQuestion";
                var responseValue = element.find('.response-item-slider').slider("option", "value");
                var responseText = element.find('textarea').val();

                var response = { "Id": id, "EventId": eventId, "ParentId": parentId, "ParentType": parentType, "ResponseValue": responseValue, "ResponseText": responseText };
                responseItems.push(response);
            });

            sessionContainer.children().each(function (index, el) {
                var element = $(el);

                var id = "-1";
                var parentId = element.find('input[type=hidden]').val();
                var parentType = "Session";
                var responseValue = element.find('.response-item-slider').slider("option", "value");
                var responseText = "";

                var response = { "Id": id, "EventId": eventId, "ParentId": parentId, "ParentType": parentType, "ResponseValue": responseValue, "ResponseText": responseText };
                responseItems.push(response);
            });

            responseItems = JSON.stringify(responseItems);

我尝试记录所有内容,但它只在我对其进行字符串化的最后一行中断。

我该如何解决这个问题?任何建议或信息都将受到高度赞赏。

【问题讨论】:

  • 什么浏览器给你这个错误?
  • 听起来像是一个被垃圾收集的跨框架引用。你在用这样的东西吗?
  • @Bergi 嗯?我不认为那是我的帖子。
  • @Bergi 嗯......你可能会在那里做一些事情。我有一个将部分视图(评估项)加载到 DIV 中的页面。然后,我遍历该 div 中的每个项目以构建 responseItems 对象数组。它工作正常(记录了所有内容),直到我得到那个错误的字符串化。
  • @AnimaSola 是<iframe> 中的“部分视图”?由于每个 <iframe> 都是一个独特的 JavaScript 全局环境,因此当对象在帧之间传递时,可能会发生奇怪的事情。

标签: javascript jquery json stringify


【解决方案1】:

我有同样的错误。就我而言,我在设置模型属性之一时忘记了 .val() 。在我尝试 JSON.stringify 模型之前没有错误

        this.model.set(
        {
            customername: this.$("#customername").val(),
            jobtitle: this.$("#jobtitle"),  //This was the line causing the error
            testimonialtext: this.$("#testimonialtext").val()
        });

【讨论】:

  • 遇到了同样的问题。我将$tr.find($('.asm-note').val()) 设置为对象中的一个属性,而我的实际意思是$tr.find('.asm-note').val()
【解决方案2】:

我遇到了同样的问题。就我而言,它已修复将我的麻烦变量转换为 toArray()。我的意思是这样的:
responseItems = responseItems.toArray();
我不知道为什么那个变量看起来像一个数组,但它不是 之后您可以致电:
JSON.stringfy(responseItems);
没有什么问题。
PD:对不起我的英语我不是以英语为母语的人

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2014-05-21
    • 2014-05-19
    • 2014-05-27
    相关资源
    最近更新 更多