Как опубликовать значение тега select в PHP с помощью Ajax post? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть этот HTML-код выбора.

<div>
    <select id="pickType" class="form-control select2 " name="pickType">
        <option value="" selected="selected">Select Type</option>
        <option value="TBL_LEMON">Lemon</option>
        <option value="TBL_APPLE">Apple</option>
        <option value="TBL_GRAPE">Grape</option>
    </select>
</div>

И я использую сериализацию Ajax для публикации данных в файл php (populate.php).Код jQuery, как показано ниже.

<script>
    $(document).ready(function(){
        $('#pickType').change(function(){

            var selected = $(this).val();
            var data_type = $("#pickType").serialize()+"&type="+"getTable";
            $.post("populate.php",data_type).done(function( data ){
                console.log(data);
                console.log(selected);
            });
        });
    });
</script>

Проблема в том, что значение не может быть отправлено в populate.php, поэтому файл PHP не может передать данные json обратно.

Я попытался console.log и оповестить значение, и оно отлично работает.

Моя цель - передать значение из select в мой SQL-запрос.Потому что мой SQL-запрос должен будет запросить 3 разных таблицы.Код для моего PHP, как показано ниже.

if((isset($_POST['type'])) && ($_POST['type']=='getTable'))
{
    $sql = DB::getInstance()->FetchArray("select * from '".$_POST['pickType']."' ");
    if(count($sql) > 0)
    {
        $array  = array();
        foreach($sql as $row)
        {
            $array2 = array();
            $array2[]= $row['ID'];
            $array2[]= $row['SUBJECT_ITEMS'];
            $array[] =  $array2;
        }
        echo json_encode($array);
    }
}

Что мне здесь не хватает?

Спасибо, если кто-то может мне помочь.Благодарю.

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

Оказывается, я добавляю одиночную кавычку на имя таблицы в populate.php

Это должно быть ". $ _ POST ['pickType']."поэтому запрос будет "выбрать * из TBL_LEMON" .

Моя проблема выше, потому что я добавил одинарную кавычку '". $ _ POST [' pickType ']."', Запрос не удался, потому что "select * from 'TBL_LEMON'"

Моя проблема решена.Благодарю.

0 голосов
/ 26 февраля 2019

Попробуйте:

var selected = $(this).find(':selected').val();
var data_type = "pickType="+selected+"&type=getTable";

Также вы можете проверить свои данные поста на вкладке params в разделе сети консоли разработчика браузера, чтобы убедиться, что данные публикуются

0 голосов
/ 26 февраля 2019

Я предпочитаю использовать вызов ajax.Прежде всего, получите значение выбранной опции:

var selectedOpt = $('#pickType').val();

, а затем вызовите ваш populate.php , используя ajax:

$.ajax({
     url: 'populate.php',
     type: 'POST',
     data: {
          'type': selectedOpt,
          'pickType': 'getTable'
           },
     success: function(result){
     }
});

также я думаю, что вы ошиблисьотправьте ключи в ваш php файл:

if((isset($_POST['type'])) && ($_POST['type']=='getTable'))

может быть

  if((isset($_POST['pickType'])) && ($_POST['type']=='getTable'))
0 голосов
/ 26 февраля 2019

Попробуйте изменить этот код

var data_type = $("#pickType").serialize()+"&type="+"getTable";

, чтобы следовать коду

var data_type = {
  pickType: selected,
  type: 'getTable'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...