我有一个HTML选择框,允许管理员根据所选的老师选择事件
<select id="teachermale" name="teachermale">
<option selected disabled>Male Teachers</option>
<option value="Mohamed Adil">Mohamed Adil</option>
<option value="Sherif Reda">Sherif Reda</option>
<option value="Mohamed Shahban">Mohamed Shahban</option>
<option value="Abdullah al Haiti">Abdullah al Haiti</option>
<option value="Salah">Salah</option>
<option value="Ahmed Nabil">Ahmed Nabil</option>
<option value="Abdul Tawab">Abdul Tawab</option>
<option value="Mahmoud Mahmoud">Mahmoud Mahmoud</option>
<option value="Ahmed Ghanim">Ahmed Ghanim</option>
</select>
接下来的jquery从fullcalendar中删除所有当前事件,以显示特定教师的事件。并建立了一个ajax请求,以从数据库中获取各个教师的事件。
$(function() {
$("#teachermale").change(function(){
var str = "";
$("#teachermale option:selected").each(function(){
str += $(this).text() + "";
});
console.log(str);
$('#calendar').fullCalendar('removeEvents');
changeDisplay(str);
}).change();
});
function changeDisplay(str){
console.log(str);
$.ajax({
url:'find_event.php',
type:'POST',
data : '&str='+encodeURIComponent(str),
dataType:'text',
success: function(json) {
$('#calendar').fullCalendar('addEventSource', json);
},
error: function(xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
}
POST正在运行,并且已通过JSON正确提取了特定教师的事件。
以下是获取事件的find_event.php脚本。
// List of events
$json_array["title"]=$_POST["str"];
$title =$json_array["title"];
echo $title;
// connection to the database
try{
$pdo = new PDO('mysql:host=localhost;dbname=*******', '******', '*******');
} catch(Exception $e) {
exit('Unable to connect to database.');
}
$requete = "SELECT * FROM `evenement` WHERE `title`=?";
// Prepare your query
$stmt = $pdo->prepare($requete);
if ($stmt) {
if ($stmt->execute(array($title))) {
$events = array();
$dbEvents = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($dbEvents as $event) {
$event['allDay'] = false;
$events[] = $event;
}
} else {
// check for error
print_r($stmt->errorInfo());
}
}
echo json_encode($events);
控制台会记录字符串(即标题),并在“网络”选项卡上显示该str已发布。但是,即使我使用$('#calendar').fullCalendar('addEventSource', json);
成功获取json源中的事件,我似乎也无法使日历显示在屏幕上。
任何有关如何检查或如何显示事件的输入将不胜感激。
当完成console.log时,Json响应:
Salah[{"id":"24","title":"Salah","start":"2016-06-02 10:00:00","end":"2016-06-02 14:30:00","url":null,"allDay":false,"color":null},{"id":"26","title":"Salah","start":"2016-06-23 08:30:00","end":"2016-06-23 11:30:00","url":null,"allDay":false,"color":"green"}]
这是请求标头的样子。
参考方案
让我们关注代码中的str
变量。
在$("#teachermale").change()
中,通过在选定的每个选项上循环创建str
变量,并获取其文本。
str
wich现在是选定名称的“集合”(没有分隔符,顺便说一句,因此看起来像“ Sherif RedaMohamed ShahbanAbdul TawabAhmed Ghanim”)然后传递给changeDisplay(str)
它被认为是encodeURIComponent
(http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp)值,并作为$_POST[data]
发送到find_event.php
。
假装您的控制台日志是正确的相关错误,您的问题真的很奇怪。
.oO(我认为不是)
因为该地址不适合显示的代码(str变量)...,并且该方法也不适合。
为什么要触发与变更处理程序链接的change
?
与您发布的代码相关,您应该在URL find_event.php
上查找POST的控制台状态。
您的脚本似乎存在多个问题。
; /
希望它能有所帮助。
我正在尝试使用以下代码将新文件写入服务器error_reporting(E_ALL); ini_set('display_errors', 1); if($_SERVER['REQUEST_METHOD'] == "POST") { $html = $_POST['html'];…
CodeIgniter更新查询被执行两次 - php我正在使用CodeIgniter 2.2。每次访问页面时,我都必须用+1更新数据库。代码可以工作,但是每次都会增加+2。示例:如果是total views=2,则在单击页面后total views应该是3,但是数据库中的值是4。我确定我在控制器中仅调用一次模型add_one_to_view_image。控制者 function view(){ $view_i…
故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…
通过php表单修改我的xml文件 - php这是我的xml文件和下面的php代码。我输入了一个输入类型,它将按名字搜索学生。然后将显示有关特定学生的信息,并且将显示另一个按钮更新。问题是我想在那之后修改信息。如何通过标签名称获取元素,以便可以修改有关特定学生的信息?<students> <student> <firstname>John</firstname&…
在ajax之后将页面内容复制到同一页面 - php我有简单的注册公式,我希望首先使用ajax发送,而不刷新页面以控制是否插入正确的数据,然后仅重定向到其他页面。问题是,当我通过ajax将其发送到同一页面后,一切正常,但是页面内容重复,我可以看到两次...这是我的ajaxfunction registruj () { var name = $('#meno').val(); var pri…