【问题标题】:Getting a Null value when user change a selection when click on add more anchor tag using jquery?当用户单击使用 jquery 添加更多锚标记时更改选择时获取 Null 值?
【发布时间】:2019-03-05 21:14:55
【问题描述】:

用户从 dropdwon 菜单中选择一个或多个工作日

这里是代码

<table class="striped display" cellspacing="0" width="100%" id="myTable">
  <tbody>
    <?php for($i = 1; $i <=5; $i++ ){?>
        <tr id="row<?php echo $i?>">
          <td class="input-field col s2">
           <label>Week Days</label>
            <select id="week_days<?php echo $i;?>" data-rel="chosen" name="week_days<?php echo $i;?>[]" class="form-control" multiple="multiple">
                    <option value="1">Monday</option>
                    <option value="2">Tuesday</option>
                    <option value="3">Wednesday</option>
                    <option value="4">Thursday</option>
                    <option value="5">Friday</option>
                    </select>
                  </td>   
                    </tr>
       <?php } ?>
                </tbody>
            </table>
<a id="more_btn" class="right" href="javascript:void(0);"><img src="../../assets/images/icons/add-icon.ico" width="23px" title="Add More"/></a>

第一次用户在点击添加更多锚标记时选择单个或多个工作日通过警报检查工作日的值,如果响应等于 1,则将使用 ajax 从数据库检查此表行,然后显示警报消息TimeTable Found 在提醒此消息后用户更改工作日选择,那么工作日的值将在提醒消息中为 null.. 那么如何在用户更改时获取工作日的值通过点击添加更多锚标签来选择工作日

问题是工作日的第一次值正确,但是当数据库中存在工作日值时,用户更改工作日选择,因此工作日的值为空。为什么它得到一个空值而不是 1,2,3,4,5?

<script type="text/javascript">
 var j=1;
 $('#more_btn').click(function() {
j++;
var u = j-1;
var prev_weekdays = $('#week_days'+u).val();
var weekDay_field = prev_weekdays.toString().split(",");
        var weekDay1 = weekDay_field[0];
        var weekDay2 = weekDay_field[1];
        var weekDay3 = weekDay_field[2];
        var weekDay4 = weekDay_field[3];
        var weekDay5 = weekDay_field[4];
$.ajax({
    type: "POST",
    url: "check_timetable.php",
    data: {weekday: prev_weekdays},
    success: function(result) {
        var value = $.trim(result);
        if (value == "1"){
            alert('TimeTable Found');
        } else{   
alert("enter");
        }      
    },

});
});
</script>

Ajax 调用 PHP 文件检查工作日值是否存在于数据库中

<?php
 require_once("../../assets/db_connect.php");

 if(!empty($_REQUEST["weekday"])) {
$weekday = $_REQUEST['weekday'];
$weekdays;
foreach ($weekday as $WeekDay){
    $WD .= $WeekDay.",";
} $weekdays =rtrim($WD,',');


$TimeTable_Row = mysql_query( "SELECT * from tbl_timetable where week_days in (".$weekdays."));
$RowCount1 = mysql_num_rows($TimeTable_Row);
if($RowCount1>0){
    echo 1;
} else {
    echo 0; 
}
}?>

【问题讨论】:

  • 您的查询缺少报价(".$weekdays."));;查看语法突出显示,它显示有错误。那是你的真实代码吗?那应该读作(".$weekdays.")");
  • 我解决了这个语法错误,但当工作日值存在于数据库中时仍然显示空值
  • 你能echo $TimeTable_Rowvar_dump($TimeTable_Row) 吗?查询看起来像您期望的那样吗?你能提供表模式吗?还请用已解决的语法错误更新您的问题。
  • 我还相信您将工作日值的完整数组插入到 mysql in 函数中?那也行不通。您必须执行implode()
  • "SELECT * FROM tbl_timetable WHERE week_days IN('" . implode( "', '", $weekdays ) . "')"

标签: javascript php jquery html mysql


【解决方案1】:

您可以使用val() 从简单选择或多选中读取值。

function readValues(){
console.log($("#multiSelect").val())
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple id="multiSelect">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
<button onclick="readValues()">check</button>

【讨论】:

  • 感谢支持..你能再仔细阅读我的问题吗?
  • 工作日的第一次值正确获取,但是当数据库中存在工作日值时,用户更改工作日选择,因此工作日的值为空。它在哪里得到一个空值
  • 您确定要在那里检查确切的 onclick 功能吗?我看到你那里有 5 个选择框。 null 也意味着选择输入中没有值被选中,所以我认为你访问了错误的选择字段。
  • 为什么在点击回调函数的开头增加j
  • 你是javascript和php领域的新手吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 2015-07-05
相关资源
最近更新 更多