JavaScript、PHP、Bootstrap-疑似模态错误-PHP文件无法从JavaScript文件接收值

JavaScript、PHP、Bootstrap-疑似模态错误-PHP文件无法从JavaScript文件接收值,javascript,php,ajax,bootstrap-modal,Javascript,Php,Ajax,Bootstrap Modal,我已经建立了一个数据库。我还有一个函数(在JavaScript中)可以“捕获”按下按钮的元素的id,如下所示: Name of subject | Actions ----------------------------------------- Chemistry | Edit / Delete Algebra | Edit / Delete 因此,如果我按下“Delete”,一个javascript函数将获取该主题的id,并使用

我已经建立了一个数据库。我还有一个函数(在JavaScript中)可以“捕获”按下按钮的元素的id,如下所示:

   Name of subject   |   Actions
-----------------------------------------
      Chemistry      | Edit / Delete
       Algebra       | Edit / Delete
因此,如果我按下“Delete”,一个
javascript
函数将获取该主题的id,并使用
AJAX
发送请求,方法如下:

function confirmationDeleteSubject(boton){

  var materiaId = parseInt(boton.value);
  console.log(materiaId);

  $.ajax({
    url: 'http://localhost/path/showSubject.php',
    type: "POST",
    data: {"materiaId": materiaId},
    dataType: "html",
    beforeSend: function() {    
      console.log("Processing...");
    },
    success: function(data) {
      if( data == "OK") {
        //location.href = "http://localhost/path/main.php";
        return;
      }
      if( data == "ERROR") {
        alert("error, please try again");
        return;
      }
      alert("Server message: " + data);
    }
  });
}
然后有一个
php
文件,用于获取特定id的数据,并尝试在模式中显示它:

<?php

  include("conexionDatos.php");

  // Inicialization
  $materiaId = "";

  // This receives the data from the JavaScript function
  $materiaId = $_POST['materiaId'];

  // Query to get the data for that id
  $SQL = "SELECT m.id, m.name, m.description, m.hours, c.name AS carreer_name FROM subjects m JOIN carreers c ON (m.carreer_id = c.id) WHERE m.id = '$materiaId'";
  $result = $CONN->query($SQL);

  // This part "inserts" into the table in the modal
  if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()){
      echo "<tr>"; 
      echo "<td>{$row['name']}</td>";
      echo "<td>{$row['description']}</td>";
      echo "<td>{$row['hours']}</td>";
      echo "<td>{$row['carreer_name']}</td>";  
      echo "</tr>";
    }
  } else {
    echo "<tr><td>No data found<td></tr>";
  }

  $CONN->close();

?>
在该警报之后,会弹出一个模式,但该表为空,并且它读取的是
未找到任何数据

它有一个警告,上面写着:

注意:第12行C:\bla\muestroMateria.php中未定义的索引:materialaid

我不完全理解为什么,因为数据会在警报中弹出,但这就像php文件没有收到id,因此modals读取“未找到数据”


编辑:即使我的问题给qith一个未定义的索引警告,对我来说,它比这更进一步,在AJAX代码和PHP文件之间的某个地方。我还是不知道它是什么。

这行有问题。您的POST数组没有指定的密钥

$materiaId = $_POST['materiaId']
您应该确保发送了正确的数据(浏览器检查器/网络选项卡),并且还应避免出现前面提到的变量为null的情况

$materiaId = isset($_POST['materiaId']) ? $_POST['materiaId'] : '';

您还需要检查PHP脚本正在接收哪些数据(json变量,或发送变量的普通数组,或者出于某种原因什么都没有),您可以使用这些数据

echo变量导出($\u POST,true)
作为PHP脚本响应,
调试脚本接收的内容(以及格式)。

这一行有问题。您的POST数组没有指定的密钥

$materiaId = $_POST['materiaId']
您应该确保发送了正确的数据(浏览器检查器/网络选项卡),并且还应避免出现前面提到的变量为null的情况

$materiaId = isset($_POST['materiaId']) ? $_POST['materiaId'] : '';

您还需要检查PHP脚本正在接收哪些数据(json变量,或发送变量的普通数组,或者出于某种原因什么都没有),您可以使用这些数据

echo变量导出($\u POST,true)
作为PHP脚本响应,
调试脚本接收的内容(以及格式)。

检查materialId是否为空。@Sachin PATIL Hi!是的,我使用了var_dump();以查看其值,并返回NULL。我不明白为什么数据在警报中显示得很好(告诉我SELECT查询可以正常工作),但如果materialId不为null,它不会填充检查的模式:/可能重复。@Sachin PATIL Hi!是的,我使用了var_dump();以查看其值,并返回NULL。我不明白为什么数据在警报中显示得很好(告诉我SELECT查询工作正常),但它没有填充Hi的模式:/mable replicate!我明白了,我已经尝试过了,并一直返回未定义的索引或NULL(只有isset返回bool false)。我一直在查看它,php文件中的查询工作正常,而且javascript本身(使用警报显示变量的值)AJAX代码似乎也正常,所以我不知道,因为该值是“捕获”的,并且不为null,但php无法接收它:/I编辑了我的答案,通过另一个测试,您可以对debugHi进行测试!我明白了,我已经尝试过了,并一直返回未定义的索引或NULL(只有isset返回bool false)。我一直在查看它,php文件中的查询工作正常,而且javascript本身(使用警报显示变量的值)AJAX代码似乎也正常,所以我不知道,因为值是“捕获的”,并且不是空的,但php无法接收它:/I编辑了我的答案,您可以通过另一个测试进行调试