简体   繁体   English

对某些数据执行ajax发布请求时出错

[英]error in performing ajax post request for some of the data

I was asked to perform ajax post request to the php script for some of the data(student name and student gender which are yyyyty and F respectively) from the last row. 我被要求对最后一行的某些数据(学生姓名和学生性别分别为yyyyty和F)执行到php脚本的ajax发布请求。 By default, I want to show all the data when performing the ajax post. 默认情况下,我想在执行ajax发布时显示所有数据。 Then, I want to echo the selected data using the ajax post request. 然后,我想使用ajax发布请求回显选定的数据。 My code is found below............ When I performed the ajax post i got the error which states 我的代码在下面...............当我执行ajax发布时,我得到了指出的错误

Status Code: 200

ErrorThrown: SyntaxError: Unexpected token { in JSON at position 1634

jqXHR.responseText:

[{"student_id":"1","student_name":"Ashfur","student_gender":"F","student_age":"19","student_religion":"Muslim","student_course_id":"1"},{"student_id":"2","student_name":"Irfan","student_gender":"M","student_age":"17","student_religion":"Islam","student_course_id":"4"},{"student_id":"3","student_name":"Alice","student_gender":"F","student_age":"21","student_religion":"Chinese","student_course_id":"2"},{"student_id":"4","student_name":"Mohit","student_gender":"M","student_age":"20","student_religion":"Christian","student_course_id":"6"},{"student_id":"5","student_name":"Susy","student_gender":"F","student_age":"27","student_religion":"Chirstian","student_course_id":"5"},{"student_id":"6","student_name":"Ida","student_gender":"F","student_age":"23","student_religion":"Islam","student_course_id":"3"},{"student_id":"7","student_name":"Abdul","student_gender":"M","student_age":"22","student_religion":"Islam","student_course_id":"1"},{"student_id":"8","student_name":"Ernest","student_gender":"M","student_age":"25","student_religion":"Chinese","student_course_id":"4"},{"student_id":"9","student_name":"Wei Ling","student_gender":"F","student_age":"23","student_religion":"Chinese","student_course_id":"2"},{"student_id":"10","student_name":"Ashtae","student_gender":"M","student_age":"23","student_religion":"Islam","student_course_id":"4"},{"student_id":"11","student_name":"Jasmine","student_gender":"F","student_age":"23","student_religion":"Chinese","student_course_id":"2"},{"student_id":"65656","student_name":"yyyyty","student_gender":"F","student_age":"65","student_religion":"anything","student_course_id":"009090"}]{"student_name":"yyyyty","student_gender":"F"}

My html file 我的html文件

<html>
<head>
<script type="text/javascript" src="/Cesium-1.34/ThirdParty/jquery-1.11.3.min.js"></script> 
</head>
<div id="resulte"</div>
<script type="text/javascript">
showData();
function showData()
{
    $.ajax({
        type: "post",
        url: "student.php",
        dataType: "json",
        data: {
            lastOnly: true,
        },      
        success: function(data){
            console.log(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert('An error occurred... Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information!');
            $('#resulte').html('<p>Status Code: '+jqXHR.status+'</p><p>ErrorThrown: ' + errorThrown + '</p><p>jqXHR.responseText:</p><div>'+jqXHR.responseText + '</div>');
            console.log('jqXHR:');
            console.log(jqXHR);
            console.log('textStatus:');
            console.log(textStatus);
            console.log('errorThrown:');
            console.log(errorThrown);
        },

    });
};

</script>
</body>
</html>

In the php script 在php脚本中

<?php

$conn = mysqli_connect('localhost','root','netwitness') or die ("Could not connect database");
$db = mysqli_select_db($conn,'abdpractice') or die ('Could not select database');

$result = mysqli_query($conn,"select * from student");
$json_array = array();
while ($row = mysqli_fetch_assoc($result))
{
    $json_array[] = $row;
}
    echo json_encode($json_array);
if (!isset($_POST["lastOnly"])){
} else {
    $response = [];
    $response['student_name'] = $json_array[count($json_array)-1]['student_name'];
    $response['student_gender'] = $json_array[count($json_array)-1]['student_gender'];

    echo json_encode($response);    
}
?>

I want to echo the whole data by default. 我想默认回显整个数据。 when I performed the ajax post request I want to echo the selected data again... Please help me. 当我执行ajax发布请求时,我想再次回显所选数据...请帮助我。

Thank you. 谢谢。

The error tell you what happens. 该错误告诉您发生了什么。

You have an invalid JSON: 您的JSON无效:

[{"student_id":"1","student_name":"Ashfur","student_gender":"F","student_age":"19","student_religion":"Muslim","student_course_id":"1"},{"student_id":"2","student_name":"Irfan","student_gender":"M","student_age":"17","student_religion":"Islam","student_course_id":"4"},{"student_id":"3","student_name":"Alice","student_gender":"F","student_age":"21","student_religion":"Chinese","student_course_id":"2"},{"student_id":"4","student_name":"Mohit","student_gender":"M","student_age":"20","student_religion":"Christian","student_course_id":"6"},{"student_id":"5","student_name":"Susy","student_gender":"F","student_age":"27","student_religion":"Chirstian","student_course_id":"5"},{"student_id":"6","student_name":"Ida","student_gender":"F","student_age":"23","student_religion":"Islam","student_course_id":"3"},{"student_id":"7","student_name":"Abdul","student_gender":"M","student_age":"22","student_religion":"Islam","student_course_id":"1"},{"student_id":"8","student_name":"Ernest","student_gender":"M","student_age":"25","student_religion":"Chinese","student_course_id":"4"},{"student_id":"9","student_name":"Wei Ling","student_gender":"F","student_age":"23","student_religion":"Chinese","student_course_id":"2"},{"student_id":"10","student_name":"Ashtae","student_gender":"M","student_age":"23","student_religion":"Islam","student_course_id":"4"},{"student_id":"11","student_name":"Jasmine","student_gender":"F","student_age":"23","student_religion":"Chinese","student_course_id":"2"},{"student_id":"65656","student_name":"yyyyty","student_gender":"F","student_age":"65","student_religion":"anything","student_course_id":"009090"}]{"student_name":"yyyyty","student_gender":"F"}

The last part of the JSON is invalid: {"student_name":"yyyyty","student_gender":"F"} JSON的最后一部分无效: {"student_name":"yyyyty","student_gender":"F"}

You could use tools like https://jsonformatter.curiousconcept.com/ to see if your JSON is valid or not. 您可以使用https://jsonformatter.curiousconcept.com/之类的工具来查看JSON是否有效。

As Lawrence Cherone said, you could use json_encode. 正如Lawrence Cherone所说,您可以使用json_encode。

$myFinalJSON = json_encode($myFirstJSON);

If you want both the results to be returned in a single json response then you have to combine both the arrays 如果您希望两个结果都在单个json响应中返回,则必须将两个数组组合在一起

while ($row = mysqli_fetch_assoc($result))
{
    $json_array[] = $row;
}
    //echo json_encode($json_array);
if (!isset($_POST["lastOnly"])){
} else {
    $response = [
     'student_name' = $json_array[count($json_array)-1]['student_name'],
     'student_gender' = $json_array[count($json_array)-1]['student_gender']
];
}
$json_array[] = $response;
echo json_encode($json_array);

Send AJAX request on window load so that all the records will be displayed and when you fire a button to fetch last data you will get the last one from your records. 在窗口加载时发送AJAX请求,以便显示所有记录,并且在您触发一个按钮以获取最后一个数据时,将从记录中获取最后一个。

NOTE : Usually to fetch specific record we send a search key which is used to specify WHERE clause condition and based on that search key we execute our Sql/Mysql query. 注意 :通常为获取特定记录,我们发送一个搜索键,该键用于指定WHERE子句条件,并基于该搜索键执行Sql / Mysql查询。

Here, I have not send any search key and each time all records get fetched unccessarily ( causes performance issues ). 在这里,我没有发送任何搜索关键字,每次都不必要地获取所有记录( 导致性能问题 )。 Try avoiding this but just to clarify, in your case i just used a single button to trigger if-else condition and fetched all records every time just to demonstrate ajax request based on condition with php. 尝试避免这种情况,但是只是为了澄清一下,在您的情况下,我只使用了一个按钮来触发if-else条件,并且每次都提取所有记录只是为了演示基于条件的php请求。

Below is the code 下面是代码

HTML file HTML文件

<form method='post'>
   <button id='last'>Fetch Last</button>
</form>
<div id="result"></div>

JS File JS文件

$(window).load(function() {
    let val = 'all';
    showData(val);
});

$('#last').on('click', function() {
    let val = $(this).prop('id');
    showData(val);
});

function showData(data)
{
    $.ajax({
        type: "post",
        url: "student.php",
        dataType: "json",
        data: {
            lastOnly: data,
        },      
        success: function(data){
            console.log(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert('An error occurred... Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information!');
            $('#resulte').html('<p>Status Code: '+jqXHR.status+'</p><p>ErrorThrown: ' + errorThrown + '</p><p>jqXHR.responseText:</p><div>'+jqXHR.responseText + '</div>');
            console.log('jqXHR:');
            console.log(jqXHR);
            console.log('textStatus:');
            console.log(textStatus);
            console.log('errorThrown:');
            console.log(errorThrown);
        },

    });
};

PHP File PHP文件

$conn = mysqli_connect('localhost','root','netwitness') or die ("Could not connect database");
$db = mysqli_select_db($conn,'abdpractice') or die ('Could not select database');

$result = mysqli_query($conn,"select * from student");
$response = array();
while ($row = mysqli_fetch_assoc($result))
{
    $response[] = $row;
}
if (isset($_POST["lastOnly"]) && $_POST["lastOnly"] === 'last'){
    $size = count($json_array);
    $response['student_name'] = $json_array[$size-1]['student_name'];
    $response['student_gender'] = $json_array[$size-1]['student_gender'];
    echo json_encode($response); 
} else {
    echo json_encode($response);    
}

Also one thing to be noted that is - 另外要注意的一件事是-

Use .done() and .fail() methods to handle ajax response instead of using success and error . 使用.done().fail()方法来处理ajax响应,而不要使用successerror

Hope, you will get some help from this explanation. 希望您将从此解释中获得一些帮助。 :) :) :) :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM