2014-12-12 4 views
0

У меня есть форма, которая работает правильно, за исключением одной части. Есть флажок, сделанный с помощью тегов struts2, который возвращает true/false для отмеченных/непроверенных. Когда он не установлен, он вообще не отображается в JSON.Флажок Struts2 не отображается в JSON, если не отмечен

<s:checkbox name="chk1" id="chk1" fieldValue="true" theme="simple" /> 
<s:checkbox name="chk2" id="chk2" fieldValue="true" theme="simple" /> 

если Chk1 проверяется и Chk2 снят, выход JSON является:

Object { name="chk1", value="true"} 
Object { name="__checkbox_chk1", value="true"} 
Object { name="__checkbox_chk2", value="true"} 

то, что я ищу это:

Object { name="chk1", value="true"} 
Object { name="__checkbox_chk1", value="true"} 
Object { name="chk2", value="false"} 
Object { name="__checkbox_chk2", value="true"} 

Его struts2 генерируется скрытый объект существует «__checkbox_chk2», но фактического «chk2» нет.

Чтобы быть понятным, как «chk», так и «__checkbox_chk» присутствуют в HTML, но только «chk», которые отмечены, находятся в JSON.

Любые идеи?

Вот мой JQuery JSON:

var dataVar ; 
dataVar = $("#formWithChks").serializeArray(); 
$.ajax({ 
    type: "POST", 
    url: "url", 
    data: dataVar, 
    success: function(data) { 
     // does something 
     } 
+0

перехватчик checkbock, необходимый для удаления ____параметров –

+0

Что бы удалить перехватчик? – Freigheist

+0

Эти '__checkbox_xxx' являются мусором, chb-перехватчик собирает его, прежде чем вы поместите его в JSON. –

ответ

0

какая-либо причина, почему бесконтрольно окно не отображается в формате JSON

непроверенный флажок не связан со свойством действия, или он связан с другим свойством через перехватчик флажка. Это то же самое, что и проверенное свойство checkbox. Независимо от того, что вы вкладываете в JSON, это зависит от сериализатора. Struts2 использует json plugin для сериализации объектов для json.

+0

Я добавил свой jquery в главный пост. Я использую .serializeArray, чтобы превратить форму, содержащую оба флажка в JSON. – Freigheist

+0

Вы не должны использовать '.serializeArray', потому что вы не получаете JSON, и вам это не нужно. Попытайтесь использовать '.serialize'. –

+0

@Freigheist 'serializeArray()' не даст вам JSON, но он будет преобразован в JSON на сервере, когда вы вернете результат json. –

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