首页 > 解决方案 > Ajax 无法给出成功响应

问题描述

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

<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>

标签: phpajax

解决方案


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

使用mysqli_*or PDOwithprepared 语句,这将帮助您防止代码被 SQL 注入。

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

您的代码中的问题是,您正在使用json_encode()您的结果。但是获取结果result['subject2']是错误的,您可以从 json 响应中获取结果,如下所示

result.subject2

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

一些有用的链接:

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

如何防止 PHP 中的 SQL 注入?


推荐阅读