Невозможно отправить переменную javascript в php файл, используя ajax - PullRequest
0 голосов
/ 01 июня 2019

Я хочу отправить переменную javascript в php-файл, который показывает комментарии на веб-странице.

Мне удалось отправить эту переменную js в другой файл php, но я не могу сделать это с этим файлом comment-list.php.Я предполагаю, что есть некоторая проблема с JSON.

function listComment() {

        $.ajax({
            url: "Komentarji/comment-list.php",
            data : {page_num: page_num},
            type : 'post',
            success : function(response) {
            }
        });

        $.post("Komentarji/comment-list.php", function(data) {
                            var data = JSON.parse(data);
.
.
.

Функция вызывается здесь:

$(document).ready(function() {
        listComment();
    });

Внутри comment-list.php Я пытаюсь получить переменную, которая была отправлена ​​с ajax,Однако это не работает, и комментарии не отображаются на странице.Если я удаляю эту строку, комментарии снова работают (но, конечно, я не получаю отправленную переменную).

$num = $_POST['page_num'];

$sql = "SELECT * FROM tbl_comment ORDER BY parent_comment_id asc, comment_id asc";

$result = mysqli_query($conn, $sql);
$record_set = array();
while ($row = mysqli_fetch_assoc($result)) {
    array_push($record_set, $row);
}
mysqli_free_result($result);

mysqli_close($conn);
echo json_encode($record_set);

Вот переменная javascript и включенный файл php.

<script>
var page_num = 1;
</script>
<?php
include($_SERVER["DOCUMENT_ROOT"]."/index.php");
?>

Я получаю эту ошибку в консоли: Uncaught SyntaxError: Неожиданный токен <в JSON в позиции 0 в JSON.parse () </p>

Как сказано ранее, если я удалю строку, в которой я получаюпеременная с постом, эта ошибка исчезает.

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Вы не должны использовать $.ajax и $.post, чтобы сделать то же самое, выберите один, я бы сказал, удалите один $.post и не забудьте поставить оператор exit; после того, как вы откликнетесь на ответ избегайте PHP для дальнейшей обработки кода, если он существует, также стоит упомянуть, но не обязательно, вы можете поместить dataType в json, чтобы dataType: 'json' в вызове $.ajax, dataType используется, чтобы сообщить jQuery, что ожидать в качестве ответа введите с сервера, так как вы повторяете ответ, кодируя его в JSON, вам не нужно будет анализировать ответ на стороне JS, если вы заранее указали dataType.

 $.ajax({
        url: "Komentarji/comment-list.php",
        data : {page_num: page_num},
        type : 'post',
        dataType: 'json',
        success : function(response) {
            console.log(response); //will show the result of echo json_encode($record_set); from your PHP
        }
    });


$num = $_POST['page_num'];

$sql = "SELECT * FROM tbl_comment ORDER BY parent_comment_id asc, comment_id asc";

$result = mysqli_query($conn, $sql);
$record_set = array();
while ($row = mysqli_fetch_assoc($result)) {
    array_push($record_set, $row);
}
mysqli_free_result($result);

mysqli_close($conn);
echo json_encode($record_set);
exit; //exit statement here

После обсуждения с OP, который хотел использовать метод $.post, вот как это делается, передайте данные как объект во второй атрибут (больше информации здесь ):

$.post("Komentarji/comment-list.php", {page_num: page_num});
0 голосов
/ 01 июня 2019

Просто сделайте ваш формат JSON в вашем скрипте JS

$.ajax({
    url : 'Komentarji/comment-list.php',
    type: "POST",
    data: page_num:page_num,
    dataType: "JSON",
    success: function(data)
    {
        console.log(data);            
    },
    error: function (jqXHR, textStatus, errorThrown){
        console.log(errorThrown);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...