Javascript 尝试从数据库发布项目时出现Ajax错误500
我试图做的是修改数据库中的一些属性。我想这样做的方式是,有一个下拉菜单,其中填充了我正在调用的表中的选项(在本例中是学生姓名),然后用与该特定学生相关的信息填充文本字段,然后可以编辑这些信息,然后将其提交到数据库。到目前为止,我的下拉菜单工作正常。它用适当的属性填充自身。当我试图用其他属性填充文本字段时,就会出现问题。我打开控制台查看是否有任何错误(因为在我选择了一个学生后没有发生任何事情),它说我的帖子有一个错误500Javascript 尝试从数据库发布项目时出现Ajax错误500,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我试图做的是修改数据库中的一些属性。我想这样做的方式是,有一个下拉菜单,其中填充了我正在调用的表中的选项(在本例中是学生姓名),然后用与该特定学生相关的信息填充文本字段,然后可以编辑这些信息,然后将其提交到数据库。到目前为止,我的下拉菜单工作正常。它用适当的属性填充自身。当我试图用其他属性填充文本字段时,就会出现问题。我打开控制台查看是否有任何错误(因为在我选择了一个学生后没有发生任何事情),它说我的帖子有一个错误500 <script src="http://ajax.googl
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<?php
# Perform database query
$query = "SELECT * FROM student";
$result = $conn->query($query) or die('Query 1 failed: ' . mysql_error());
?>
<label for="studentSelect">Student Name: </label>
<select id="studentSelect">
<option value="0">Please select</option>
<?php
while ($row = $result->fetch_assoc())
{
echo '<option value="' . $row['studentID'] . '" > "' . $row['studentFirstName'] . '" "' . $row['studentLastName'] . '"</option>';
}
?>
</select>
<div>
<label for="element_5_1">First Name</label>
<input id="element_5_1" name="element_5_1" class="element text large" type="text">
</div>
<div>
<span class="floatLeft">
<label for="element_5_3">Last Name</label>
<input id="element_5_3" name="element_5_3" class="element text medium" style="width:14em" type="text">
</span>
<span style="float:left">
<label for="element_5_4">Major</label>
<input id="element_5_4" name="element_5_4" class="element text medium" style="width:4em" type="text">
</select>
</span>
<span style="float:left">
<label for="element_5_5">Credits Earned</label>
<input id="element_5_5" name="element_5_5" class="element text medium" style="width:6em" type="text">
</span>
</div>
<script type="text/javascript">
function makeAjaxRequest(studentFirstName)
{
$.ajax({
type: "POST",
data: { studentFirstName: studentFirstName },
dataType: "json",
url: "process_ajax.php",
success: function(json)
{
insertResults(json);
},
failure: function (errMsg)
{
alert(errMsg);
}
});
}
$("#studentSelect").on("change", function()
{
var id = $(this).val();
if (id === "0")
{
clearForm();
}
else
{
makeAjaxRequest(id);
}
});
function insertResults(json)
{
$("#element_5_1").val(json["studentFirstName"]);
$("#element_5_3").val(json["studentLastName"]);
$("#element_5_4").val(json["major"]);
$("#element_5_5").val(json["creditsEarned"]);
}
function clearForm()
{
$("#element_5_1, #element_5_3, #element_5_4, #element_5_5").val("");
}
</script>
学生姓名:
请选择
名字
姓
专业
获得的学分
函数makeAjaxRequest(studentFirstName)
{
$.ajax({
类型:“POST”,
数据:{studentFirstName:studentFirstName},
数据类型:“json”,
url:“process_ajax.php”,
成功:函数(json)
{
insertResults(json);
},
失败:函数(errMsg)
{
警报(errMsg);
}
});
}
$(“#学生选择”)。关于(“更改”,函数()
{
var id=$(this.val();
如果(id=“0”)
{
clearForm();
}
其他的
{
makeAjaxRequest(id);
}
});
函数insertResults(json)
{
$(“#元素_5_1”).val(json[“studentFirstName]”);
$(“#元素_5_3”).val(json[“studentLastName]”);
$(“#element_5_4”).val(json[“major”]);
$(“#element_5_5”).val(json[“creditsEarned]”);
}
函数clearForm()
{
$(“#element_5_1,#element_5_3,#element_5_4,#element_5_5”).val(“”);
}
然后我有一个单独的ajax处理文件
<?php
$host = "********.mysql.database.azure.com";
$username = "************";
$password = "*******";
$db_name = "**********";
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
$studentName = $_POST['studentFirstName'];
$query = "SELECT * FROM student";
$result = mysql_query($query) or die('Query 2 failed: ' . mysql_error());
while ($row = mysql_fetch_assoc($result)) {
if ($studentName == $row['studentFirstName']){
echo json_encode($row);
}
}
?>
我希望我已经提供了足够的信息,以便有人能够发现我的错误。谢谢大家! 解析错误行22
<?php
$host = "********.mysql.database.azure.com";
$username = "************";
$password = "*******";
$db_name = "**********";
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)){
die('Failed to connect to MySQL: '.mysqli_connect_error());
$studentName = $_POST['studentFirstName'];
$query = "SELECT * FROM student";
$result = mysql_query($query) or die('Query 2 failed: ' . mysql_error());
while ($row = mysql_fetch_assoc($result)) {
if ($studentName == $row['studentFirstName']){
echo json_encode($row);
}
}
}
?>
经过4个小时的反复试验,这就是我提出的填充输入字段的代码。我很确定你的错误在于
<option value="' . $row['studentID'] . '" > "' . $row['studentFirstName'] . '" "' . $row['studentLastName'] . '"</option>
“'.$row['studentFirstName'].'.$row['studentLastName'..”
应该是
<option value="' . $row['studentID'] . '" name="studentFirstName"> "' . $row['studentFirstName'] . '" "' . $row['studentLastName'] . '"</option>
“'.$row['studentFirstName'].'.$row['studentLastName'..”
无论如何,我的代码:
config.php
<?php
$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = ""; /* Password */
$dbname = ""; /* Database name */
$con = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$con) {
die("Connection failed: " . mysqli_connect_error());
}
?>
<?php
include("config.php");
$sql = "SELECT * FROM messaging";
$result = $conn->query($sql);
$conn->close();
?>
<!Doctype html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<label for="studentSelect">Student Name: </label>
<select id="studentSelect">
<option value="0">Please select</option>
<?php while ($row = $result->fetch_assoc()) { ?>
<option value="<?php echo $row['msg_id']; ?>" name="studentFirstName" id="studentFirstName">"<?php echo $row['msg_from'] ?>" "<?php echo $row['msg_to'] ?>"</option>
<?php } ?>
</select>
<div>
<span class="floatLeft">
<label>First Name</label>
<input id="populate_first_name" class="element text large" type="text">
</span>
<span class="floatLeft">
<label>Last Name</label>
<input id="populate_last_name" class="element text medium" style="width:14em" type="text">
</span>
<span style="float:left">
<label>Major</label>
<input id="populate_major" class="element text medium" style="width:4em" type="text">
</select>
</span>
<span style="float:left">
<label>Credits Earned</label>
<input id="populate_credits_earned" class="element text medium" style="width:6em" type="text">
</span>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#studentSelect").change(function(){
var studentFirstName = $(this).val();
$.ajax({
url: 'process_ajax.php',
type: 'post',
data: {studentFirstName:studentFirstName},
dataType: 'json',
success:function(response) {
var len = response.length;
for( var i = 0; i<len; i++) {
var studentFirstName = response[i]['studentFirstName'];
var studentLastName = response[i]['studentLastName'];
var major = response[i]['major'];
var creditsEarned = response[i]['creditsEarned'];
$("#populate_first_name").val(studentFirstName);
$("#populate_last_name").val(studentLastName);
$("#populate_major").val(major);
$("#populate_credits_earned").val(creditsEarned);
}
}
});
});
});
</script>
</body>
</html>
<?php
include("config.php");
$studentName = $_POST['studentFirstName']; // department id
$sql = "SELECT * FROM student";
$result = mysqli_query($con,$sql);
$users_arr = array();
while( $row = mysqli_fetch_array($result) ) {
if ($row['msg_id'] == $studentName) {
$studentFirstName = $row['studentFirstName'];
$studentLastName = $row['studentLastName'];
$major = $row['major'];
$creditsEarned = $row['creditsEarned'];
$users_arr[] = array("studentFirstName" => $studentFirstName, "studentLastName" => $studentLastName, "major" => $major, "creditsEarned" => $creditsEarned);
}
}
// encoding array to json format
echo json_encode($users_arr);
?>
index.php
<?php
$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = ""; /* Password */
$dbname = ""; /* Database name */
$con = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$con) {
die("Connection failed: " . mysqli_connect_error());
}
?>
<?php
include("config.php");
$sql = "SELECT * FROM messaging";
$result = $conn->query($sql);
$conn->close();
?>
<!Doctype html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<label for="studentSelect">Student Name: </label>
<select id="studentSelect">
<option value="0">Please select</option>
<?php while ($row = $result->fetch_assoc()) { ?>
<option value="<?php echo $row['msg_id']; ?>" name="studentFirstName" id="studentFirstName">"<?php echo $row['msg_from'] ?>" "<?php echo $row['msg_to'] ?>"</option>
<?php } ?>
</select>
<div>
<span class="floatLeft">
<label>First Name</label>
<input id="populate_first_name" class="element text large" type="text">
</span>
<span class="floatLeft">
<label>Last Name</label>
<input id="populate_last_name" class="element text medium" style="width:14em" type="text">
</span>
<span style="float:left">
<label>Major</label>
<input id="populate_major" class="element text medium" style="width:4em" type="text">
</select>
</span>
<span style="float:left">
<label>Credits Earned</label>
<input id="populate_credits_earned" class="element text medium" style="width:6em" type="text">
</span>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#studentSelect").change(function(){
var studentFirstName = $(this).val();
$.ajax({
url: 'process_ajax.php',
type: 'post',
data: {studentFirstName:studentFirstName},
dataType: 'json',
success:function(response) {
var len = response.length;
for( var i = 0; i<len; i++) {
var studentFirstName = response[i]['studentFirstName'];
var studentLastName = response[i]['studentLastName'];
var major = response[i]['major'];
var creditsEarned = response[i]['creditsEarned'];
$("#populate_first_name").val(studentFirstName);
$("#populate_last_name").val(studentLastName);
$("#populate_major").val(major);
$("#populate_credits_earned").val(creditsEarned);
}
}
});
});
});
</script>
</body>
</html>
<?php
include("config.php");
$studentName = $_POST['studentFirstName']; // department id
$sql = "SELECT * FROM student";
$result = mysqli_query($con,$sql);
$users_arr = array();
while( $row = mysqli_fetch_array($result) ) {
if ($row['msg_id'] == $studentName) {
$studentFirstName = $row['studentFirstName'];
$studentLastName = $row['studentLastName'];
$major = $row['major'];
$creditsEarned = $row['creditsEarned'];
$users_arr[] = array("studentFirstName" => $studentFirstName, "studentLastName" => $studentLastName, "major" => $major, "creditsEarned" => $creditsEarned);
}
}
// encoding array to json format
echo json_encode($users_arr);
?>
学生姓名:
请选择
您使用的是这种过程式风格,因此我相信您的mysqli_query()
需要$conn
作为第一个参数:$result=mysqli_query($conn,$query)
当我按照您的建议调整$result时,整个页面都崩溃了。在调整之前,下拉列表中填充了数据库中的项目,并加载了页面的其余部分。调整后,只加载了下拉菜单,但没有加载数据库中的属性。您使用的是mysql\u
还是mysqli\u
?更确切地说,你打算用哪一个?我以为我在用mysqli?如果我没有,这就是我想要使用的。你是说我的end php标记有问题吗?你忘了关闭if语句看看你的代码和我发布的代码之间的差异。在我的代码的最后还有一个}。哇,好吧,这消除了500错误,但是属性仍然没有发布到文本字段。还有其他建议吗?在数据库中插入了行吗?添加更多控制台日志后,我发现我的错误出现在我的插入结果函数中,具体是以下几行:$(“#element_5_1”).val(json[“studentFirstName]”)
我得到的错误是uncaughtreferenceerror:val未定义
即使我将@Eduardo Nascimento Alves建议的语句更改为$(“#element_5_1”).val(json.studentFirstName),我也会得到相同的错误代码>我很抱歉回复太晚,但我尝试过了,但它对我不起作用。我想这可能与你写的下拉菜单有关(因为里面有不同的php标签,所以给了我错误),所以我把它换成了你在答案开头更正的那个,但它仍然不起作用。我还将msg_id值改为studentID,因为这是我数据库中的一个实际变量。但似乎没有什么能让它继续下去。我很感激你花了这么多时间来写这些OK,在做了一些控制台日志之后,我想我理解了这个问题。我正在尝试使用studentFirstName来确定使用哪个数据库信息填充字段。我们通过获取下拉列表的选项值并对照数据库中的信息进行检查来实现这一点。我输出第一个名字的值以查看它是否得到了它,结果显示为bobname=
。第一个名字总是附加“name=”如果是这样的话,那么我认为它永远不会起作用,因为DB中没有名字有“name=”,所以它无法获取任何内容并将其发布到字段中。