我终于设法使用ajax将数据发布到php文件但是我一直遇到以下错误:
"注意:未定义的索引:第26行的/Applications/XAMPP/xamppfiles/htdocs/insights/ManageCourses_UpdateSubmit.php中的course_title
注意:未定义的索引:第27行的/Applications/XAMPP/xamppfiles/htdocs/insights/ManageCourses_UpdateSubmit.php中的course_code 空值 空值 记录已更新"
我觉得很奇怪,因为当我检查mysql表时它会更新记录,当我刷新页面时会显示更新的值。
单击按钮时触发的ajax脚本是:
<script>
function myCall() {
var request = $.ajax({
url: "ManageCourses_UpdateSubmit.php",
type: "GET",
dataType: "html"
});
var data = $('#updateForm').serialize();
$.post('ManageCourses_UpdateSubmit.php', data);
request.done(function(msg) {
$("#updateForm").html(msg);
});
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
}
</script>
我注意到当我从AJAX代码中删除它时,我没有收到错误消息,但是一旦值更新,我需要刷新页面。
request.done(function(msg) {
$("#updateForm").html(msg);
});
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
抱歉忘了提交主文件
ManageCourses_UpdateSubmit.php文件是:
<?php
include "db_conx.php";
try
{
$db_conx = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$db_conx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = $db_conx->prepare("UPDATE course_details SET course_title = :course_title
WHERE course_code = :course_code");
$course_title = $_POST['course_title'];
$course_code = $_POST['course_code'];
echo var_dump($course_title)."<br>";
echo var_dump($course_code)."<br>";
$sql->bindParam(':course_title', $course_title, PDO::PARAM_STR);
$sql->bindParam(':course_code', $course_code, PDO::PARAM_STR);
/*** execute the prepared statement ***/
$sql->execute();
/*** success message ***/
$message ='record updated';
}
catch(Exception $e)
{
$message = 'Message: ' .$e->getMessage();
}
?>
<html>
<head>
<title>Update Course</title>
</head>
<body>
<p><?php echo $message; ?>
</body>
</html>
任何想法?
答案 0 :(得分:1)
您正在提出2个请求。第一个是GET请求,因此没有设置POST变量。不需要此请求,post请求也会返回响应,因此您可以使用:
function myCall() {
var data = $('#updateForm').serialize();
$.post('ManageCourses_UpdateSubmit.php', data, function(response){
//display message
$("#updateForm").html(response);
//'soft'reload parent page, after a delay to show message
setTimeout(function(){
window.location = window.location;
},1000);
}).fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
}
另请注意,您不希望响应包含<head>
和<body>
标记,因为它已添加到现有页面中,因此ManageCourses_UpdateSubmit.php
应如下所示:
catch(Exception $e)
{
$message = 'Message: ' .$e->getMessage();
}
die($message);
//nothing else after this