1

EDIT: есть одна концептуальная ошибка и одна техническая ошибка в определении проблемы, поэтому этот вопрос лучше закрывать вместо того, чтобы дезинфицировать. Когда у меня будет время переопределить проблему, я отправлю ее еще раз. Пожалуйста, помогите голосовать, чтобы закрыть из-за неспецифического.Как можно десериализовать многоуровневый объект JavaScript в HTML-форму?

Существует много информации и вопросов о сериализации сложных форм HTML к соответствующему объекту JavaScript (например, this).

Вот пример этого процесса: наличие этой формы

<form> 
    <input type="text" name="scalar" value="1"> 
    <input type="text" name="array[0]" value="1"> 
    <input type="text" name="array[1]" value="2"> 
    <input type="text" name="array[2]" value="3"> 
    <input type="text" name="object[subscalar]" value="1"> 
</form> 

И получать от него это JavaScript Object

{ 
    "scalar": 1, 
    "array": [1, 2, 3], 
    "object": { 
    "subscalar": 1 
    } 
} 

Но как я могу сделать обратную работу?

Наша цель - создать собственный POST-адрес для отдельного окна браузера. У нас есть сложный объект JavaScript, и мы отправляли его через AJAX POST, поэтому мы использовали объект непосредственно как параметр данных jQuery.ajax. Но теперь нам нужно создать реальную форму в DOM, содержащую входы и значения, со всем синтаксисом этих скобок, а затем изначально отправить его на определенный кадр.

Использование jQuery не является обязательным. Уже существующий метод, библиотека и т. Д. Предпочтительнее против пользовательского snuppet. Это не значит, что вы не можете его закодировать, это не значит, что нам нужно изобретать колесо.

Заранее спасибо.

+0

Так что у вас есть форма, с которой вы запрашиваете значения? – Rajesh

+0

Ваша структура не имеет смысла. Зачем вам нужно имя, подобное «dream [as] ...», генерируемое динамически? –

+0

@Rajesh нет, у меня есть объект JS, и мне нужно создать форму, которую браузер может отправить, создавая тот же POST, который он создает, когда я отправляю этот объект через XMLHTTPRequest. –

ответ

1
function parseform(elem,parent=""){ 
    this.html=""; 
    this.parent=parent; 
    if(typeof elem=="Array"){ 
     var counter=0; 
     elem.forEach(function(a){ 
      this.html+=new parseform(a,this.parent+"["+counter+"]").html; 
      counter++; 
     }); 
    } 
    if(typeof elem=="String"){ 
     this.html+="<input name='"this.parent+"["+elem+"]' />"; 
    } 
    //object in progress 
    if(typeof elem=="Object"){ 
     for (var key in elem) { 
      if (p.hasOwnProperty(key)) { 
       this.html += new parseform(elem[key],this.parent="["+key+"]").html; 
      } 
     } 
    } 
} 

Использование так:

code=new parseform(yourjsondecoded).html; 

Я знаю, что вы не хотите кода, но я не думаю, что Theres АНИ для чего-то столь специфического

+0

Извините, ребята, есть одна концептуальная ошибка и одна техническая ошибка в определении проблемы, поэтому я закрываю это сейчас, пока не успею переопределить проблему. Пожалуйста, помогите голосовать, чтобы закрыть для неспецифического. Спасибо всем за потраченное время. –

 Смежные вопросы

  • Нет связанных вопросов^_^