如何使用Ajax发布将选择标记值发布到PHP?

时间:2019-02-26 07:29:16

标签: php jquery ajax serialization

我有这些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 :(得分:0)

尝试更改此代码

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

遵循代码

var data_type = {
  pickType: selected,
  type: 'getTable'
}

答案 1 :(得分:0)

尝试:

data dir

您还可以在浏览器开发者控制台的“网络”部分下的“ params”标签中检查您的发布数据,以确保已发布数据

答案 2 :(得分:0)

我更喜欢使用ajax调用。首先获取所选选项的值:

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

,然后使用Ajax调用您的 populate.php

$.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'))

答案 3 :(得分:0)

我发现我在populate.php中的表名上添加了单引号

应为“。$ _ POST ['pickType']”。 ,因此查询将为“从TBL_LEMON中选择*”

我上面的问题是因为我添加了单引号'“。$ _ POST ['pickType']。”',查询失败是因为“从'TBL_LEMON'中选择*'

我的问题解决了。谢谢。