2013-09-03 1 views
4

Я прочитал эту другую нить, и это было не хорошо: Put data into JSON with JqueryUncaught InvalidStateError в JSON.stringify

Всякий раз, когда я пытаюсь 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); 

Я пытался войти все, и это разбивает только на последней строке, где я stringify его.

Как это исправить? Любой совет или информация будут высоко оценены.

+1

Какой браузер предоставляет вам эту ошибку? – Pointy

+0

@ Перманентный хром. – AnimaSola

+1

Похоже, что ссылка на межкадровые рамки собрана для сбора мусора. Вы используете что-нибудь такое? – Bergi

ответ

2

У меня была та же проблема. В моем случае было исправлено внесение переменной myArray(). Я имею в виду что-то вроде этого:
responseItems = responseItems.toArray();
Я не знаю, почему эта переменная выглядит как массив, но это не после этого вы можете позвонить:
JSON.stringfy(responseItems);
без проблем.
PD: извините за мой английский Я не являюсь носителем английского языка

4

У меня была такая же ошибка. В моем случае я забыл .val(), когда устанавливал один из свойств модели. Ошибка не была до тех пор, пока я не попытался использовать JSON.stringify модель

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

Был такой же вопрос. Я установил '$ tr.find ($ ('. Asm-note'). Val())' в свойство объекта, когда я на самом деле имел в виду '$ tr.find ('. Asm-note') .val() ' – thameera