找到答案:
我在尝试执行AJAX帖子时遇到困难。出于某种原因,我收到服务器500错误。我可以看到它在控制器中达到了断点。我尝试从PHP文件中发出警报和回声,但它不起作用。我试着查看其他堆栈溢出查询,但没有帮助。
add_pet.html
中的Ajax调用<script>
function add_trigger(){
var name=$('#name').text();
var breed=$('#breed').text();
$.ajax({
type: "POST",
url: "add_pet.php",
data: "PET_NAME="+name+"&PET_BREED="+breed,
cache: false,
success: function(result) {
$("script").html(result);
window.location.href='view.html';
}
});
}
$('div[contenteditable]').keydown(function(e) {
if (e.keyCode === 13) {
add_trigger();
return false;
}
});
</script>
<form>
<div id="Heading" style="font-weight:400">Join</div>
<div id='name_label' style="font-weight:100">Name:</div>
<div id='name' contenteditable='true' style="font-weight:100"></div>
<div id='breed_label' style="font-weight:100">Breed:</div>
<div id='breed' contenteditable='true' style="font-weight:100"></div>
<div id='add_trigger' onclick='add_trigger()' style="font-weight:400"><span style="cursor:pointer">Add pet</span></div>
</form>
add_pet.php 将数据插入数据库的代码:
<?php
session_start();
$doctorid=$_SESSION['DOCTOR_ID'];
$PET_NAME=$_POST['PET_NAME'];
$PET_BREED=$_POST['PET_BREED'];
$count_results=execute_MYSQL("SELECT * FROM PETS;");
$PET_ID=$count_results->num_rows;
echo "<script>alert('line=INSERT INTO PETS VALUES ($PET_ID,\"$PET_NAME\",\"$PET_BREED\",$doctorid'));</script>";
execute_MYSQL("INSERT INTO PETS VALUES ($PET_ID,'$PET_NAME','$PET_BREED',$doctorid);");
echo "<script>window.location.href='view.html'</script>"
错误的屏幕截图
答案 0 :(得分:4)
内部服务器错误是由于服务器端脚本编写错误引起的。它没有与客户端脚本有关的一切。所以我猜你应该查看php代码..你错过了
';'
在服务器端的最后一个回声..你还应该给你完整的PHP代码我的意思是服务器数据库连接和execute_MYSQL函数定义。错误也可能在其中。
答案 1 :(得分:1)
尝试
type: "GET",
或更改
data: "PET_NAME="+name+"&PET_BREED="+breed,
with:
data: {PET_NAME: name, PET_BREED: breed},
无论如何,你的服务器端“error_log”文件的复制和粘贴会很高兴看到!
答案 2 :(得分:1)
成功后,您可以这样做:
function(result){
$("script").html(result);
window.location.href='view.html';
}
如果我看着你的ajax文件,如果它有效,它会返回:
<script>window.location.href='view.html'</script>
将这两者结合起来:
$("script").html("<script>window.location.href='view.html'</script>");
window.location.href='view.html';
没有多大意义?
答案 3 :(得分:1)
您尚未将DOCTOR_ID
param传递给Ajax调用中的add_pet.php。在Ajax调用之前,您需要捕获doctor_id(在HTML中不明显),然后在Ajax data
哈希中传递它。
function add_trigger() {
var name=$('#name').text();
var breed=$('#breed').text();
var doctor_id=$('#doctor').val();
$.ajax({
type: "POST",
url: "add_pet.php",
data: { PET_NAME: name, PET_BREED: breed, DOCTOR_ID: doctor_id },
cache: false,
success: function(result) {
$("script").html(result);
window.location.href='view.html';
}
});
}
如果HTML中没有doctor_id
的来源,则必须确定其来源,因为服务器肯定希望收到此值并使用它来插入新行进入PETS。
你还在 add_pet.php 的最后一行中遗漏了一个分号,这会导致问题。如果add_pet.php
中没有显示任何剩余的PHP代码,您也希望将它包含在您的问题中,因为这些可能不是PHP代码中的唯一错误。
根据您显示的内容,这些应该清除HTTP 500
错误。你肯定还有其他你想看的东西。从PETS表到num_rows
的{{1}}查询应替换为表ID的自动增量字段。