Как я могу получить свои переменные в моем скрипте PHP через AJAX - PullRequest
0 голосов
/ 07 января 2019

У меня есть 2 переменные, которые я пытаюсь передать в мой PHP-скрипт для использования в моем выражении sql, но, похоже, он не работает для меня. Любые идеи, почему я не могу получить значение для моих переменных $ start и $ limit? Я что-то здесь упускаю?

Вот две переменные javascript на моей странице index.php:

var start = 0;
var limit = 5;
var reachedMax = false;

$(window).scroll(function(){
    if($(window).scrollTop() == $(document).height() - $(window).height()){
        infiniteScrollData();
    }
});

$(document).ready(function(){
    //infinite scroll
    infiniteScrollData();
}

Затем в моем файле javascript есть функция javascript, которая отправляет эти две переменные на мою php-страницу:

function infiniteScrollData(){

  if(reachedMax){
      return;
  } 
$.ajax({
        method: "POST",
        url: "sortResults.php",
        dataType: "json",
        data:  {
            infiniteScrollData: 1,
            start: start,
            limit: limit
            },
        success: function(response){
            if(response == "reachedMax")
                reachedMax = true;
                else{
                    start += limit;
                    $("#rowDisplayResults").append(response);
            }   
        }
});
}

Тогда у меня есть 2 переменные в моем php-скрипте, вот так:

if(isset($_POST['infiniteScrollData'])){
    $start = check_input($_POST['start']);
    $limit = check_input($_POST['limit']);

    $query = "SELECT * FROM topics DESC LIMIT :start, :limit";
    $stmt = $conn->prepare($query);
    $stmt->bindParam(':start', $start, PDO::PARAM_INT);
    $stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
    $stmt->execute();
}

Проверка ввода - это просто функция для очистки данных

function check_input($dirtData) {
    $dirtData = trim($dirtData);
    $dirtData = strip_tags($dirtData);
    $dirtData = stripslashes($dirtData);
    $dirtData = htmlspecialchars($dirtData);
    $dirtData = filter_var($dirtData, FILTER_SANITIZE_STRING);
    return $dirtData;
}

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Для отправки данных на сервер (PHP) используйте объект FormData.

для получения дополнительной информации, пожалуйста, проверьте ссылку.

https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData

0 голосов
/ 07 января 2019

Метод check_input вроде бы в порядке.

  • Проверьте, получаете ли вы старт, в первую очередь ограничьте число переменных в вашем js-коде
  • Проверьте ваш URL, правильный ли он URL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...