首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用implode和ajax插入复选框值

使用implode和ajax插入复选框值
EN

Stack Overflow用户
提问于 2017-02-05 23:43:23
回答 2查看 610关注 0票数 0

代码语言:javascript
复制
// this is my javascript where i take the data ,

function saveData() {
  var modsubj = $('#modalsubject').val();
  var modsect = $('#modalsection').val();
  var modday = $('#modalday').val();
  var modstart = $('#modalstarttime').val();
  var modend = $('#modalendtime').val();
  var moduser = $('#userID').val();

  $.ajax({
    type: "POST",
    url: "modal.funcs.php?p=add",
    data: "subj=" + modsubj + "&sect=" + modsect + "&day=" + modday + "&start=" + modstart + "&end=" + modend + "&user=" + moduser
  });

}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" id="modalday[]" name="modalday[]" value="M">Monday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" id="modalday[]" name="modalday[]" value="T">Tuesday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" id="modalday[]" name="modalday[]" value="W">Wednesday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" id="modalday[]" name="modalday[]" value="Th">Thursday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" id="modalday[]" name="modalday[]" value="F">Friday &nbsp;&nbsp;
  </label>
</div>

这是我的php函数,我使用了implode函数,这样我就可以在一行上插入数据。

代码语言:javascript
复制
$page = isset($_GET['p'])?$_GET['p']:'';
  if($page=='add'){
      foreach ($_POST['day'] as $key => $value) {
        $subj = $_POST['subj'];
        $sect = $_POST['sect']; 
        $day = implode("",$_POST['day']); 
        $strTime = $_POST['start'];
        $endTime = $_POST['end'];
        $user_id = $_POST['user'];
      }

        $auth_user->createSchedule($subj,$sect,$day,$strTime,$endTime,$user_id);
        $schedRow = $auth_user->readSchedule();

  } else if ($page=='edit') {

  }
EN

回答 2

Stack Overflow用户

发布于 2017-02-06 00:46:03

下面是如何将列表发送到服务器

您可以将这一天分解为一系列天

要添加更多项目,请添加逗号和更多键值:

代码语言:javascript
复制
 data: { day: modday.join(","),
         subj:$('#modalsubject').val() // no comma on the last
       }

代码语言:javascript
复制
$(function() {
  $("#save").on("click", function() {
    saveData();
  });
});

function saveData() {
  var modday = [];
  $('.modalday:checked').each(function() {
    modday.push(this.value);
  });
  console.log(modday);
  $.ajax({
    type: "POST",
    url: "modal.funcs.php?p=add",
    data: { day: modday.join(",") }
  });

}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" class="modalday" name="modalday[]" value="M">Monday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" class="modalday" name="modalday[]" value="T">Tuesday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" class="modalday" name="modalday[]" value="W">Wednesday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" class="modalday" name="modalday[]" value="Th">Thursday &nbsp;&nbsp;
  </label>
</div>
<div class="checkbox">
  <label class="checkbox-inline">
    <input type="checkbox" class="modalday" name="modalday[]" value="F">Friday &nbsp;&nbsp;
  </label>
</div>
<button id="save">Save</button>

票数 0
EN

Stack Overflow用户

发布于 2017-02-06 01:21:29

我自己尝试过,我认为大多数操作都可以在saveData函数中执行,而不是在PHP中。

我假设你会将你的id改为一个类,因为id应该是唯一的:

代码语言:javascript
复制
<input type="checkbox" class="modalday" name="modalday[]" value="M">Monday &nbsp;&nbsp;

看看这个:

代码语言:javascript
复制
function saveData() {
  var modsubj = $('#modalsubject').val();
  var modsect = $('#modalsection').val();

  var moddayAll = document.getElementsByClassName('modalday');

  var modday = [];

  for (let i = 0; i < moddayAll.length; i++) {
    if (moddayAll[i].checked) {
      modday.push(moddayAll[i].value);
    }
  }

  var modstart = $('#modalstarttime').val();
  var modend = $('#modalendtime').val();
  var moduser = $('#userID').val();

  var add = 'add';

  $.post("modal.funcs.php", {p:add, subj:modsubj, sect:modsect, day:modday.join(","), start:modstart, end:modend, user:moduser},
    function( data ) {
      // do whatever you want with data returned from modal.funcs.php
    }
  );

};

我只是使用普通的JavaScript来选择所有modalday元素,然后循环遍历它们并添加值(M、T、W等)。在被检查到modday数组的数组中:

代码语言:javascript
复制
  var moddayAll = document.getElementsByClassName('modalday');

  var modday = [];

  for (let i = 0; i < moddayAll.length; i++) {
    if (moddayAll[i].checked) {
      modday.push(moddayAll[i].value);
    }
  }

然后,因为您使用的是POST方法,所以我使用了JQuery的.post(),并将'p‘参数与数据一起传递,而不是在查询字符串中传递。您会注意到,在这里,modday数组也会通过join()调用转换为字符串:

代码语言:javascript
复制
  var add = 'add';

  $.post("modal.funcs.php", {p:add, subj:modsubj, sect:modsect, day:modday.join(","), start:modstart, end:modend, user:moduser},
    function( data ) {
      // do whatever you want with data returned from modal.funcs.php
    }
  );

然后,在modal.funcs.php中,您只需从$_REQUEST变量获取值并将它们传递给您的函数:

代码语言:javascript
复制
<?php

$page = $_REQUEST['p'];

if ($page == 'add') {

  $subj = $_REQUEST['subj'];
  $sect = $_REQUEST['sect']; 
  $day = $_REQUEST['day']; 
  $strTime = $_REQUEST['start'];
  $endTime = $_REQUEST['end'];
  $user_id = $_REQUEST['user'];

  $auth_user->createSchedule($subj,$sect,$day,$strTime,$endTime,$user_id);
  $schedRow = $auth_user->readSchedule();

} else if ($page=='edit') {

}

$_REQUEST‘’day将是被选中的复选框的值的逗号分隔字符串。如果您需要在此处进一步处理数组,可以添加另一个步骤来执行此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42053955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档