Javascript 通过ajax提交选择框的值并显示结果不起作用
我有一个表单,它有一个选择框,其中包含一年中的月份,在选择任何月份后,应在同一页面上显示该月份的所有日期。我曾尝试使用ajax来实现这一点,但不知何故,我没有得到任何结果。当我直接查看通过ajax调用的页面时,我在那里得到了预期的结果。无法找出主页面未显示结果的原因 主页Javascript 通过ajax提交选择框的值并显示结果不起作用,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个表单,它有一个选择框,其中包含一年中的月份,在选择任何月份后,应在同一页面上显示该月份的所有日期。我曾尝试使用ajax来实现这一点,但不知何故,我没有得到任何结果。当我直接查看通过ajax调用的页面时,我在那里得到了预期的结果。无法找出主页面未显示结果的原因 主页 <form method="post" action="" name="form_cal" id="form_cal"> <div> <span><label
<form method="post" action="" name="form_cal" id="form_cal">
<div>
<span><label class="h5"><strong>Month for Screening</strong></label></span>
<span>
<select name="month" id="month" value="" tabindex="1" aria-hidden="true" required style="height:50px;display: block;padding:10px;" class="h5">
<option value="" selected="selected">- Select One -</option>
<option value="1">January</option>
<option value="2">Febuary</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
</span>
</div>
</form>
<div id="calendar-display"></div>
筛查月份
-选择一个-
一月
二月
前进
四月
也许
六月
七月
八月
九月
十月
十一月
十二月
JS
<script type='text/javascript'>
$(document).ready(function(){
var timer = null;
var dataString;
function submitForm(){
$.ajax({ type: "POST",
url: "calendar-action.php",
data: dataString,
success: function(result){
$('#calendar-display').php(result);
}
});
return false;
}
$('#month').on('change', function() {
clearTimeout(timer);
var month = $(this).val();
dataString = 'month='+ month;
timer = setTimeout(submitForm, 050);
});
});
$(文档).ready(函数(){
var定时器=null;
var数据串;
函数submitForm(){
$.ajax({type:“POST”,
url:“calendar action.php”,
数据:dataString,
成功:功能(结果){
$(“#日历显示”).php(结果);
}
});
返回false;
}
$(“#月”)。在('change',function()上{
清除超时(计时器);
var month=$(this.val();
数据字符串='月='+月;
定时器=设置超时(提交格式050);
});
});
然后在PHP中由ajax调用的页面
<?php
if($_POST){
date_default_timezone_set('Africa/Lagos');
$date = date('Y-m-d H:i:s');
$ucimslots = "25";
$curyear = date("Y");
$month = mysqli_real_escape_string($connQlife, $_POST['month']);
$day = date('j');
$daysinmonth = date('t',mktime(0,0,0,$month,1,$curyear));
//$daysleftinmonth = $daysinmonth - $day;
}
?>
<div id="calendar-display">
<?Php for($day = 1; $day <= $daysinmonth; $day++){ ?>
<div class="calendarcont">
<div class="calendarheadercont">
<div class="calendarday"><?Php echo date("l", mktime(0, 0, 0,$month,$day,$curyear)); ?></div>
</div>
<div class="clear_1"></div>
<div class="calendarsubcont">
<div class="calendardatecont">
<div class="calendarmonth"><?Php echo date("M", mktime(0,0,0, $month,$day,$curyear)); ?></div>
<div class="calendardate"><?Php echo date("j", mktime(0,0,0,$month,$day,$curyear)); ?></div>
</div>
<div class="calendartextcont">
<div class="calendartext">Available slots: <?Php echo $availableslots; ?></div>
</div>
</div>
</div>
<?Php } ?>
</div>
可用插槽:
在JavaScript中,尝试进行php()
函数调用,该调用无效:
$(“#日历显示”).php(结果)代码>
相反,您应该使用:
$('#日历显示').html(结果)代码>哦,该死。谢谢@Gary Thomas我把这个页面写成php页面并在那里输入php。谢谢你指出这一点。现在可以了。你为什么要使用mysqli\u real\u escape\u string
?@dharman这是我正在进行的一个大型项目的一部分。这个月仍将有数据库条目。我只是在防范sql注入这不是防范sql注入的正确方法,不要使用它!请看这篇帖子:@DharmanYes我正在使用事先准备好的语句。但是如果我没弄错的话,你是说我不需要在准备好的语句中传递输入B之前转义它吗?如果你使用参数并绑定数据,那么就不需要了。如果你只是把它放到SQL字符串中,那么就没有什么可以保护你了。