阿贾克斯无法给出成功的回应



我正在根据从ajax调用获得的姓名和admission_year获取学生的主题详细信息,但ajax无法给出成功响应,因此主题字段无法显示主题。请解决如何获取成功消息。我的编码有问题吗? 整个编码如下所示。 脚本:

<script type="text/javascript">
$('#branch_name,#class_name').on('change', function(){
//gender_new = $('#gender_new option:selected').val();
class_name = $('#class_name option:selected').val();
branch_name = $('#branch_name option:selected').val();
name=$('#name').val();
admission_year=$('#admission_year').val();
$.ajax({
type :'POST',
dataType:'json',
data : { class_name : class_name, branch_name : branch_name, name : name, admission_year : admission_year },
url : 'tc_search.php',
success : function(result){
$('#subject1').val(result['subject1']);
$('#subject2').val(result['subject2']);
}
});
});
</script>

tc_search.php

<?php
include('connection.php');
$class_name=$_POST['class_name'];
$admission_year=$_POST['admission_year'];
$name=$_POST['name']
$branch_name=$_POST['branch_name'];
$query = "SELECT * FROM admit_senior WHERE name = '$name' and admission_year='$admission_year'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo json_encode($row);
?>

.html:

<input type="hidden" class="form-control" id="admission_year" name="admission_year" readonly <?php echo "value='{$row1['admission_year']}' "?>/>
<div class="form-group">
<label class="col-sm-3 control-label">Name :</label>
<div class="col-sm-3">
<input type="text" class="form-control" id="name" name="name" <?php echo "value='{$row1['name']}' "?>/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">2) He/She appeared/did not appear examination:</label>
<label class="col-sm-3 control-label">Branch Name:</label>
<div class="col-sm-3">
<select id="branch_name" name ="branch_name" class="form-control">
<option selected disabled readonly>Select branch</option>
<option value="B.A">B.A</option>
<option value="B.Com">B.Com</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Class Name:</label>
<div class="col-sm-3">
<select id="class_name" name ="class_name" class="form-control">
<option selected disabled readonly>Select Class</option>
<option value="Part-I">Part-I</option>
<option value="Part-II">Part-II</option>
<option value="Part-III">Part-III</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">1.</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="subject1" id="subject1"/>
</div>
<label class="col-sm-1 control-label">2.</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="subject2" id="subject2"/>
</div>

首先mysql_*很久以前就被弃用了,并在PHP 7中关闭。

mysqli_*PDO与预准备语句一起使用,这将帮助您防止使用 SQL 注入编写代码。

其次,使用mysqli_num_rows()检查是否获得结果,然后您可以使用mysqli_fetch_array

代码中的问题是,您正在使用json_encode()作为结果。 但是获取像result['subject2']这样的结果是错误的,你可以从 JSON 响应中得到结果

,如下所示
result.subject2

最好使用console.log(result)并在浏览器控制台中检查结果以进行调试。

一些有用的链接:

PDO准备的语句是否足以防止SQL注入?

如何防止 PHP 中的 SQL 注入?

最新更新