未定义索引:每当尝试从ID中选择ID时

时间:2019-06-24 23:56:47

标签: javascript php ajax

错误:

  

注意:未定义的索引:第16行的C:\ wamp64 \ www \ app \ Form_Edit_Appt.php中的ID   注意:第33行上的C:\ wamp64 \ www \ app \ Form_Edit_Appt.php中的ID为未定义索引

第16行是我定义的位置:$ ID = $ _POST ['id']; 第33行是SELECT,我尝试在select中使用$ ID = $ _POST ['id']而不是调用新变量 第38行是我在第16行使用的变量

我正在使用索引文件中的AJAX将ID传递给我的PHP表单,然后在select语句中使用该ID生成一些内容。每当我尝试获取变量时,都会出现未定义的索引错误。我已经阅读了其他相关问题,并尝试将数据类型定义为JSON,尝试了几种语法更改,但一直都在这样做。这是我的脚本,用于加载表单,然后由ajax发送数据(我尝试将这些顺序交换为无济于事):

$('a.edit_appt').on("click", function() {
  $('.appt_menu').addClass('hidden');
  var id = event.id;

  $('#modalwindow').load('Form_Edit_Appt.php').addClass('show');
  $('.backdropper').addClass('show');

  $.ajax({
    url: 'Form_Edit_Appt.php',
    type: 'POST',
    dataType: 'json',
    data: {
      'id': id
    },
    success: function(data) {
      calendar.fullCalendar('refetchEvents');
      alert("success");
    }
  });
});

我还尝试添加ID警报以检查其正确性,并将ID定义为新变量,但没有区别。

这是我对数据及其用途的呼叫:

在我的第一个select语句中,我在结尾处调用id,但直接在帖子中调用它,在第二个中,我在变量中调用它。两种方法,结果相同。我还尝试了一个id isset函数,但是没有运气。

$ID = $_POST['id'];

$apquery = "
        SELECT id, events.PersonID, CONCAT('(ID: ',events.PersonID,') ',ForeName,' ',SurName) AS 'patient', CAST(start_event AS date), CAST(end_event AS date), CAST(start_event AS time), CAST(end_event AS time), appt_status, Appt_Type, background_color, notes, events.Appt_Type_ID, events.appt_status_ID FROM `events` INNER JOIN tbl_appt_status AS status ON events.appt_status_ID = status.Appt_status_ID INNER JOIN tbl_appt_types AS type ON events.Appt_Type_ID = type.Appt_Type_ID INNER JOIN tbl_contacts AS contact ON events.PersonID = contact.PersonID WHERE id='".$_POST['id']."'
         ";
$result11 = mysqli_query($connect, $apquery);

$apquerytwo = "
        SELECT id, events.PersonID, CONCAT('(ID: ',events.PersonID,') ',ForeName,' ',SurName) AS 'patient', CAST(start_event AS date), CAST(end_event AS date), CAST(start_event AS time), CAST(end_event AS time), appt_status, Appt_Type, background_color, notes, events.Appt_Type_ID, events.appt_status_ID FROM `events` INNER JOIN tbl_appt_status AS status ON events.appt_status_ID = status.Appt_status_ID INNER JOIN tbl_appt_types AS type ON events.Appt_Type_ID = type.Appt_Type_ID INNER JOIN tbl_contacts AS contact ON events.PersonID = contact.PersonID WHERE id=.$id.
         ";
$result12 = mysqli_query($connect, $apquerytwo);

2 个答案:

答案 0 :(得分:0)

您正在发出两个AJAX请求。第一个来自.load()(这只是调用$.ajax()的快捷方式,该调用将响应HTML写入指定的元素),它没有任何POST参数;第二个来自$.ajax(),确实如此。

您应该执行一个AJAX请求,该请求可以完成您想要的一切。您可以为.load()提供数据参数,还可以提供回调函数。

$('#modalwindow').load('Form_Edit_Appt.php', {id: id}, function() {
    $("#modalwindow, .backdropper").addClass("show");
    calendar.fullCalendar('refetchEvents');
});

答案 1 :(得分:-2)

“每当我尝试获取变量时,都会得到未定义的索引错误”,您没有发布确切的错误(总是发布整个确切的错误),大多数情况下,这意味着$ _GET数组中没有['id'] 。

在这种情况下,您还应该使用mysqli_real_escape_string()在提交之前清理所有发布/获取的数据和/或一路将数据作为参数提交给mysql中存储的函数,以防止mysql注入。

对于可能未实际设置的任何内容,始终使用“ isset($ VAR ['xxx'])”。

/ u / sscotti是正确的,因为您第二次尝试的格式是错误的,因为如果您不首先在字符串中使用双引号结尾,并且您的变量是区分大小写的,并且您使用了它是UC第二次,但第一次是LC,所以它们不匹配。