PHP передача JSON данных с использованием Ajax для сравнения inArray () - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь проверить ввод пользователя в форме html в список допустимых значений в базе данных, используя Ajax, а затем я хочу отобразить соответствующее сообщение. Это код, который я использую:

js

$(document).ready(function(e){

  $.ajax({
    type: 'POST',
    url: 'datafile.php',
    dataType : "json",
    success: function(result) {
          $("#postal_code").change(function(){
            var postal_code = $("#postal_code").val().slice(0,-2);
            if ($.inArray(postal_code,result) !== -1){
             console.log('success');
            } else {
              console.log('failure');
            }
        });
      }
    });
  });

файл данных. php

<?php
require_once("./db_con.php");

$query = mysqli_query($con, "SELECT postal_code FROM table");
$rows = mysqli_fetch_all($query);
echo json_encode($rows);
mysqli_free_result($query);
mysqli_close($con);
exit();
?>

Проблема, с которой я столкнулся, - это ввод value никогда не соответствует ни одному из значений переменной result, даже если я знаю, что они есть в базе данных. Я думаю, проблема связана с тем, что переменная result содержит массивы в стороне от другого массива, например [["value1"],["value2"],["value3"]].

1 Ответ

1 голос
/ 18 июня 2020

Я не могу говорить с частью JavaScript, но поскольку вы выбираете только один столбец, вы можете извлечь его в одно измерение. mysqli_fetch_all по умолчанию извлекает массив с числовым индексом:

$rows = array_column(mysqli_fetch_all($query), 0);

Или извлекает и извлекает по имени столбца:

$rows = array_column(mysqli_fetch_all($query, MYSQLI_ASSOC), 'postal_code');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...