Отправка данных из php в ajax (с помощью mysqli_fetch_assoc и json_encode) - PullRequest
0 голосов
/ 28 сентября 2018

Я относительно новичок в программировании с использованием php и ajax, поэтому, пожалуйста, выслушайте меня.

Это мой код jQuery / ajax:

function change2(radio){
        section = $('input[type=radio][name=section]:checked').prop('id');
        $.ajax({
            url: './templates/teacherIndex4.php',
            type: 'GET',
            data: {'grade': grade, 'section': section},
            dataType: 'json',
            success: function (res) {
                console.log(res);
                if(res.status == "ok") {
                    document.getElementById("listStud").innerHTML = "Test";
                }
            },
            error: function(error) {
                console.log(error);
            }
        });
    }

Я уже проверил оценкуи переменные раздела, и они в порядке.Это мой php-код:

if (isset($_GET['grade']) && isset($_GET['section'])) {
        $grade = $_GET['grade'];
        $section = $_GET['section'];

        $recent_year = (int)date("Y"); 
        $recent_month = (int)date("n"); 
        if ($recent_month < 6){
          $recent_year = $recent_year - 1;
        } 
        $next_year = (int)$recent_year + 1; 
        $schoolyear = "S.Y. " . $recent_year . " - " . $next_year;

        $sy = "select * from schoolyear where schoolYear = '$schoolyear'";
        $syRes = mysqli_query($conn, $sy);
        $schoolyearid  = mysqli_fetch_array($syRes);
        $schoolyear = $schoolyearid['schoolyear_id'];

        $query = "select * from student where schoolyearid_fk = '$schoolyear' and gradeid_fk = '$grade' and sectionid_fk = '$section'";
        $userinfo = mysqli_query($conn, $query);
        $res = array(); 
        while($line = mysqli_fetch_assoc($userinfo)){ 
            $res[] = $line;
        }

        $res['status'] = "ok";
        print json_encode($res);
}

Моя проблема в том, что она возвращает это в функции ошибки: Изображение журнала консоли

Я попытался изменить dataType на 'text ', и он возвращает пустой ответ, но в функции успеха (попытка получить res.status возвращает неопределенное значение).

Я также пробовал print json_encode($line) и echo json_encode($line), и, похоже, возвращаетинформация, которую я искал (здесь: данные с разбитыми настоящими именами )

Может кто-нибудь помочь мне с этим?Это для моего сольного исследования, и я не знаю, как решить эту проблему.

EDIT - Все коды до function change2(radio) (в файле js):

var grade;    
function drop(x){
        y = x.toString();
        id = "id" + y;
        $('#' + id).toggle("slow");
        if ($('#' + y).hasClass('active')){
            $('#' + y).removeClass('active');
        } else {
            $('#' + y).addClass('active');
        }
    }

    function drop2(){
        $('#subhand').toggle("slow");
        if ($('#subhand').hasClass('active')){
            $('#subhand').removeClass('active');
        } else {
            $('#subhand').addClass('active');
        }
    }

    function change(radio) { 
        if (radio.checked && radio.id === "1") {
            document.getElementById("sections").innerHTML = "<input type='radio' id='1' name='section' onclick='change2(this)'>Emerald &nbsp;<input type='radio' id='2' name='section' onclick='change2(this)'>Jade &nbsp;<input type='radio' id='3' name='section' onclick='change2(this)'>Ruby &nbsp;";
            grade = 1;
        } else if (radio.checked && radio.id === "2"){
            document.getElementById("sections").innerHTML = "<input type='radio' id='4' name='section' onclick='change2(this)'>Dahlia &nbsp;<input type='radio' id='5' name='section' onclick='change2(this)'>Kamia &nbsp;<input type='radio' id='6' name='section' onclick='change2(this)'>Rosal &nbsp;";
            grade = 2;
        } else if (radio.checked && radio.id === "3"){
            document.getElementById("sections").innerHTML = "<input type='radio' id='8' name='section' onclick='change2(this)'>Sodium &nbsp;<input type='radio' id='9' name='section' onclick='change2(this)'>Potassium &nbsp;<input type='radio' id='7' name='section' onclick='change2(this)'>Lithium &nbsp;";
            grade = 3;
        } else if (radio.checked && radio.id === "4"){
            document.getElementById("sections").innerHTML = "<input type='radio' id='11' name='section' onclick='change2(this)'>Neutron &nbsp;<input type='radio' id='10' name='section' onclick='change2(this)'>Electron &nbsp;<input type='radio' id='12' name='section' onclick='change2(this)'>Proton &nbsp;";
            grade = 4;
        } else if (radio.checked && radio.id === "5"){
            document.getElementById("sections").innerHTML = "<input type='radio' id='13' name='section' onclick='change2(this)'>Block A &nbsp;<input type='radio' id='14' name='section' onclick='change2(this)'>Block B &nbsp;<input type='radio' id='15' name='section' onclick='change2(this)'>Block C &nbsp;";
            grade = 5;
        } else if (radio.checked && radio.id === "6"){
            document.getElementById("sections").innerHTML = "<input type='radio' id='16' name='section' onclick='change2(this)'>Block A &nbsp;<input type='radio' id='17' name='section' onclick='change2(this)'>Block B &nbsp;<input type='radio' id='18' name='section' onclick='change2(this)'>Block C &nbsp;";
            grade = 6;
        }
    }

РЕДАКТИРОВАТЬ 2 - вкладка Network (в инструментах разработчика): Вкладка Network приводит к инструментам разработки

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Хорошо.Уже есть решение.Пришлось сделать это:

$res = array(); 
   while($line = mysqli_fetch_assoc($userinfo)){ 
     $line["full_name"] = json_encode($line["full_name"]); //This line is the solution to the whole thing 
     $res[] = $line;
 }
echo json_encode($res); //echo or print, didn't matter

Короче говоря, $ line ["full_name"] нужно было закодировать в json.Распечатал данные, которые я искал.(Спасибо за тех, кто помог мне с моим вопросом!)

0 голосов
/ 28 сентября 2018

Вы должны использовать echo json_encode ($ res);функция печати возвращает логическое значение.Вы не возвращаете массив json из php.Вы возвращаете логическую переменную.Это твоя проблема.Ваша проблема будет решена с помощью echo json_encode($res); Она вернет массив json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...