如何将查询字符串传递给AJAX请求

时间:2018-04-16 09:22:17

标签: php ajax http

我有一个网址: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。

2 个答案:

答案 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}'