我有这些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);
}
}
我在这里想念什么?
感谢有人可以帮助我。谢谢。
答案 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'中选择*'
我的问题解决了。谢谢。