我有一个网址:website.test /?module = support& item = callScreen& id = 10
我的javascript中还有基于后端解析变量的AJAX调用:
if ('{/literal}{$currentDate}{literal}' < '{/literal}{$ticket.lock_date} {literal}') {
$('#status').attr("disabled", true);
$.ajax({
type: 'GET',
url: '/modules/support/ticketAutoclose.php'
});
}
ticketAutoclose.php文件:
<?php
require_once('../../config.php');
$login = new Login();
if (!$login->checkLogin()) {
echo lang($_SESSION['language'], "INSUFFICIENT_RIGHTS");
exit();
}
$db = new Database();
$query = "
UPDATE
tickets
SET
ticket_status = 8,
closed_at = NOW()
WHERE
id = :ticket
";
$binds = array(
':ticket' => $_GET['id']
);
$db->update($query, $binds);
当我检查我的数据库时,该值尚未编辑。所以我前往我的网络接口并检测到AJAX调用引发了错误:“undefined index:id”。我的问题是:如何将ticketAutoclose.php文件交给我当前页面的URL内的id? (queryString似乎不起作用,因为它目前无法识别$ _GET ['id'],它应该是10。
答案 0 :(得分:0)
您没有在请求中传递ID。
1。将你的id添加到javascript ajax调用中,如下所示:
if ('{/literal}{$currentDate}{literal}' < '{/literal}{$ticket.lock_date} {literal}') {
$('#status').attr("disabled", true);
var id = $(this).attr('id'); // use your own lagic to fetch the id
$.ajax({
type: 'GET',
url: '/modules/support/ticketAutoclose.php?id=' + id // HERE
});
}
2。不要忘记在PHP代码中使用isset()
<?php
require_once('../../config.php');
$login = new Login();
if (!$login->checkLogin()) {
echo lang($_SESSION['language'], "INSUFFICIENT_RIGHTS");
exit();
}
if(!isset($_GET['id']))
exit('please provide ID'); // like this
$db = new Database();
$query = "
UPDATE
tickets
SET
ticket_status = 8,
closed_at = NOW()
WHERE
id = :ticket
";
$binds = array(
':ticket' => $_GET['id']
);
$db->update($query, $binds);
答案 1 :(得分:0)
我设法使用我也使用的智能模板引擎自己解决它。有一个ID发送并放在URL中,那么,为什么不提取相同的数据并在我的ajax调用中使用它?我尝试了这种逻辑,但它确实奏效了。数据库记录都已使用此更新:
url: '/modules/support/ticketAutoclose.php?id='+'{/literal}{$ticket.id}{literal}'