尝试从数据库发布项目时获取Ajax错误500

时间:2017-11-08 18:42:00

标签: javascript php jquery mysql ajax

我要做的是修改数据库中的一些属性。我想要这样做的方法是让一个下拉菜单填充我正在调用的表中的选项(在本例中为学生姓名),然后使用与该特定学生相关的信息填充文本字段,然后可以编辑然后提交到数据库。到目前为止,我的下拉菜单有效。它充满了适当的属性。当我尝试使用其他属性填充文本字段时,我的问题出现了。我打开控制台,看看我是否收到任何错误(因为我选择了一名学生后没有发生任何事情),并且说我的POST出现了错误500。

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

然后我有一个单独的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);
    }
}
?> 

我希望我已经为某人能够发现错误提供了足够的信息。谢谢!

2 个答案:

答案 0 :(得分:0)

解析错误行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);
        }
    }
}
?>

您还必须更改您的javascript

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);
}

答案 1 :(得分:0)

经过4个小时的反复试验,这是我提出的用于填充输入字段的代码。我很确定你的错误就是你的

<option value="' . $row['studentID'] . '" > "' . $row['studentFirstName'] . '"  "' . $row['studentLastName'] . '"</option>

应该是

<option value="' . $row['studentID'] . '" name="studentFirstName"> "' . $row['studentFirstName'] . '"  "' . $row['studentLastName'] . '"</option>

反正我的代码:

<强>的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());
}
?>

<强>的index.php

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

<强> process_ajax.php

<?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);
?>

尝试一下,知道它是否有效