【问题标题】:Passing checkbox values of a form as JSON? [closed]将表单的复选框值作为 JSON 传递? [关闭]
【发布时间】:2014-12-02 17:21:32
【问题描述】:

HTML代码:

   <form class="form-horizontal" id="addpersons" style="padding:20px;">
<fieldset class="scheduler-border">

<!-- Form Name -->
<legend class="scheduler-border">Information</legend>

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="fname">First Name</label>  
  <div class="col-md-5">
  <input id="fname" name="firstName" type="text" placeholder="First Name" class="form-control input-md">

  </div>
</div>

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="lname">Last Name</label>  
  <div class="col-md-5">
  <input id="lname" name="lastName" type="text" placeholder="Last Name" class="form-control input-md">

  </div>
</div>

<!-- Multiple Checkboxes (inline) -->
<div class="form-group">
  <label class="col-md-4 control-label" for="professionalservices">Do you offer any of the services?</label>
  <div class="col-md-4" style="width:70%; margin-left:34%;">
    <label class="checkbox-inline" for="professionalservices-0">
      <input type="checkbox" name="professionalservices" id="professionalservices-0" value="1">
        BI  services
    </label>
    <label class="checkbox-inline" for="professionalservices-1">
      <input type="checkbox" name="professionalservices" id="professionalservices-1" value="2">
      Resell vendor's  services
    </label>
    <label class="checkbox-inline" for="professionalservices-2">
      <input type="checkbox" name="professionalservices" id="professionalservices-2" value="3">
      Consulting Services
    </label>
    <label class="checkbox-inline" for="professionalservices-3">
      <input type="checkbox" name="professionalservices" id="professionalservices-3" value="4">
      Other  servies
    </label>
    <label class="checkbox-inline" for="professionalservices-4">
      <input type="checkbox" name="professionalservices" id="professionalservices-4" value="5">
      No  services
    </label>
  </div>
</div>
</fieldset>

<!-- Button -->
<div class="form-group">
  <label class="col-md-4 control-label" for=""></label>
  <div class="col-md-4">
         <a href="javascript:addperson();" class="btn btn-success">Apply Now</a>
  </div>
</div>

</form>

Json 代码:

    <script type="text/javascript"> 

   function addperson(){

        alert("hello");
        var persons = JSON.stringify({
        "firstName": $('#fname').val(), 
        "lastName":$('#lname').val(),
        "Services":$('#services').val()


       });

    alert("test values are"+persons);
    console.log(persons);

       $.ajax({
           type: "POST",
           contentType: 'application/json',
           url: baseurl+"addperson/add",
           data: persons,
           dataType:"text",
           success:successmethod,
           error: function(data,status) {
            alert("Error  "+status);
           }
          });

   }
   function successmethod(data){
    alert("sucessfully stored values");
   }
   </script>

在上面的代码中,我能够获取每个文本框的值,但是当涉及到复选框时,我想在 json 中检索多个复选框值并将其传递给 Ajax。谁能告诉我如何获取多个Json 中的复选框值??任何帮助将不胜感激..

【问题讨论】:

  • 请不要不必要地对这个问题投反对票
  • 是的,它正在得到答案,您是否发现自己在说 “它不起作用” 并且回答者回复 “我试过了,它给出了一个 json 字符串。说我你需要的格式” ?这意味着问题不完整,他们只是假设需要什么。

标签: javascript jquery ajax json checkbox


【解决方案1】:

如果对您有帮助,请将其标记为答案。 改变你的函数 addperson()

function addperson(){
    var objJson={};
    objJson["firstName"]=$('#fname').val();
    objJson["lastName"]=$('#lname').val();
    objJson["Services"]={};
    $.each( $('input[type=checkbox]'), function(i, left) {
        objJson["Services"][$(this).parent().text().trim()]=$(this).prop("checked");
    });
    var persons = JSON.stringify(objJson);
    alert("test values are"+persons);
    console.log(persons);
    $.ajax({
       type: "POST",
       contentType: 'application/json',
       url: baseurl+"addperson/add",
       data: persons,
       dataType:"text",
       success:successmethod,
       error: function(data,status) {
        alert("Error  "+status);
       }
     });

}

【讨论】:

  • 这根本不起作用..
  • 我试过了,它给了一个 json 字符串。告诉我你需要的格式
【解决方案2】:

为什么不用 jQuery serializeArray() 获取整个表单:

data: $('form#addpersons').serializeArray();

会得到你想要的并大大缩短你的代码。

顺便说一下,它的 Javascript 代码不是 JSON 代码。 ;)

试试:

function addperson(){

        var persons =  $('form#addpersons').serializeArray();
        console.log(persons);

       });

【讨论】:

  • 我试过上面的方法,但它不起作用...
  • jQuery 是要走的路,简单简短,让框架序列化表单。
【解决方案3】:

尝试这样的方法来获取检查值:

$( "#services:checked" ).map(function() {
    return $(this).val();
}).get()

在你的情况下,这将是这样的:

    var persons = JSON.stringify({
    "firstName": $('#fname').val(), 
    "lastName":$('#lname').val(),
    "Services": $( "#services:checked" ).map(function() {
                    return $(this).val();
                }).get()
   });

【讨论】:

  • 由此获得复选框值,但它只保存一个值而不是数据库中的多个值..
猜你喜欢
  • 2014-03-24
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 2015-07-04
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多