简体   繁体   English

使用Ajax和PHP发送多选框值

[英]Send Multi Select box Values with Ajax & PHP

i have a problem in my php & ajax code so i have this Code 我的php和ajax代码有问题,所以我有此代码

<select id='absence_reason[]' name='absence_reason[]'>
     <option value='1'>Value 1</option>
     <option value='2'>Value 2</option>
     <option value='3'>Value 3</option>
     <option value='4'>Value 4</option>
     <option value='5'>Value 5</option>
     <option value='6'>Value 6</option>
</select>

<select id='absence_reason[]' name='absence_reason[]'>
     <option value='1'>Value 1</option>
     <option value='2'>Value 2</option>
     <option value='3'>Value 3</option>
     <option value='4'>Value 4</option>
     <option value='5'>Value 5</option>
     <option value='6'>Value 6</option>
</select>

Now i want to Send the values of this 2 select boxes with AJAX & PHP : Ok in Ajax i have write this code but is not work 现在我想使用AJAX和PHP发送这2个选择框的值:在Ajax中,我已经编写了此代码,但是不起作用

    function adding_multi_absences() {
      var reason = new Array();
      $("input[name='absence_reason[]']:selected").each(function() {
            reason.push( $(this).val() );
      });

      $.ajax({
          type: "POST",
          url: "include/ajax/adding_multi_absences.php",
          data: {
              add_multi_reason:reason
          },
          beforeSend: function () { // Before Send the data do somthing
             $(".loader").fadeIn();
             $(".showing").fadeIn();
          },
          success: function(data) { // If Process Success do somthing in our case will be show some data in browser
             $("#resultshow").fadeIn().html(data);
          },
          error: function(err) {  // if Process Error
            alert(err);
          },
          complete: function() { // After complete all Request Do Somting
            $('.loader').fadeOut();
              setTimeout(get_student_for_multi_absences,2000); // Refresh Every X Seconde
          }

      });
}

and in my PHP File this Code 在我的PHP文件中此代码

PHP File PHP文件

                            if (!empty($_POST['add_multi_reason'])) {
                                // this variabel have Multi Values From CheckBox Of Select Student  who Absences in Each Class
          $reason                      =  $_POST['add_multi_reason'];
                                $date_D                      =  date('d');
                                $date_M                      =  date('m');
                                $date_Y                      =  date('Y');
                                $hours                       =  date('H');
                                $mins                        =  date('i');
                                $date_now                    =  date('Y-m-d');
                                foreach ($absences as $student_code) {
                                    add_absences($student_code,$reason,$admin_school_code,$date_D,$date_M,$date_Y,$hours,$mins,$admin_token,$admin_permission);
                                }
                                echo show_alert("success",$Lang['success_operation']);
                        }else{

                                echo show_alert("warning",$Lang['no_absence_selected']);
                        }

i want to send this 2 select box in data base but each one insert into a row thank you 我想在数据库中发送此2选择框,但每个插入到行中谢谢

You just need value attribute name in form. 您只需要表单中的值属性名称。 Example : Form 示例:表格

<form id="login_form">
    <input type="text" name="username" id="a"/>
    <input type="password" name="password" id="b"/>
    <button type="button" onclick="login()">Submit</button>
</form>

Javascript 使用Javascript

$(document).ready(function(){});
function login(){
  var obj = $('#login_form').serialize();
  $.post('index.php', obj, function(res){
    alert(res);
  })
}

PHP - index.php PHP-index.php

<?php
if(!empty($POST['username']) && !empty($POST['password'])){
  $user = $POST['username'];
  $pass = $POST['password'];
  $res = "Username : ".$user." || Password : ".$pass;
  return $res;
}
?>

If you serialize the whole form as object and pass in URL you will get all possible and selected values. 如果将整个表单序列化为对象并传递URL,则将获得所有可能的值和选定的值。

HINT : below code will show you all received data. 提示:下面的代码将向您显示所有接收到的数据。 you can take alert in javascript. 您可以使用javascript发出警报。

<?php  
  print_r($_POST);
?>

you have to change your code a bit 1. that's how you get a value of select in array $("select[name='absence_reason[]']").each(function() { reason.push( $(this).val() ); }) 2.then stringify your ajax reason array var data = {add_multi_reason: JSON.stringify(reason)}; $.ajax({ type: "POST", url: "include/ajax/adding_multi_absences.php", data: data, beforeSend: function () { // Before Send the data do somthing $(".loader").fadeIn(); $(".showing").fadeIn(); }, success: function(data) { // If Process Success do somthing in our case will be show some data in browser $("#resultshow").fadeIn().html(data); }, error: function(err) { // if Process Error alert(err); }, complete: function() { // After complete all Request Do Somting $('.loader').fadeOut(); setTimeout(get_student_for_multi_absences,2000); // Refresh Every X Seconde } }); 您必须稍稍更改代码1。这就是在数组 $("select[name='absence_reason[]']").each(function() { reason.push( $(this).val() ); }) 获得select值的方式 $("select[name='absence_reason[]']").each(function() { reason.push( $(this).val() ); }) 2.然后将您的ajax原因数组字符串化 var data = {add_multi_reason: JSON.stringify(reason)}; $.ajax({ type: "POST", url: "include/ajax/adding_multi_absences.php", data: data, beforeSend: function () { // Before Send the data do somthing $(".loader").fadeIn(); $(".showing").fadeIn(); }, success: function(data) { // If Process Success do somthing in our case will be show some data in browser $("#resultshow").fadeIn().html(data); }, error: function(err) { // if Process Error alert(err); }, complete: function() { // After complete all Request Do Somting $('.loader').fadeOut(); setTimeout(get_student_for_multi_absences,2000); // Refresh Every X Seconde } }); var data = {add_multi_reason: JSON.stringify(reason)}; $.ajax({ type: "POST", url: "include/ajax/adding_multi_absences.php", data: data, beforeSend: function () { // Before Send the data do somthing $(".loader").fadeIn(); $(".showing").fadeIn(); }, success: function(data) { // If Process Success do somthing in our case will be show some data in browser $("#resultshow").fadeIn().html(data); }, error: function(err) { // if Process Error alert(err); }, complete: function() { // After complete all Request Do Somting $('.loader').fadeOut(); setTimeout(get_student_for_multi_absences,2000); // Refresh Every X Seconde } }); 3. and that's how you get values of two selects in php $feedback = json_decode($_POST['add_multi_reason']); 3.这就是您在php $feedback = json_decode($_POST['add_multi_reason']); 获得两个选择的值的方式 $feedback = json_decode($_POST['add_multi_reason']); first select value var_dump($feedback[0]); 首先选择值var_dump($feedback[0]); second select value var_dump($feedback[1]); 第二个选择值var_dump($feedback[1]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM