我试图通过两个步骤来达到结果:
这就是我的尝试:
<select class="pam" >
<option value=""></option>
<?php
$conn_string = "host=localhost port=5432 dbname=pame user=postgres password=";
$conn = pg_connect($conn_string);
$sql = pg_query($conn, "SELECT * FROM espece order by nom_com ASC ");
while($ligne_liste=pg_fetch_array($sql)) {
echo '<option value="'.$ligne_liste['id_espece'].'">'.$ligne_liste['nom_com']."</option>\n";
}
echo '</select>';
?>
我使用的JS代码:
jQuery(document).ready(function($) {
$('select.pam').change(function(){
$.post ('/charta.php',
{id_espece:$('select.pam').val()},
success: function(){
alert('success');
window.location = "http://localhost/charta.php";
}
);
});
});
我的PHP文件:
<?php
$user_id = isset($_POST["id_espece"])?$_POST["id_espece"]:"";
$user=conn ($user_id) // conn is a function who return an array from database
$js = json_decode( $user, true );
?>
<?php
echo json_encode($js); ?>
这里的问题是我得到&#34; NULL&#34;对于$ _POST(&#39; id_espece&#39;)的值,即使从下拉列表中选择的值也是如此;但当我用:
替换成功函数时function(res){ $('#txt').html(res); }
它在<div id="txt"></div>
中返回我想要的结果(JSON输出)
但是当它返回错误“
&#39;未定义索引:id_espece&#39;`
第二步我想获取同一个PHP文件的输出为HTML(div):
如果我们认为PHP文件工作并发送了一个JSON表单,我试图在JS文件中获取结果,如下所示:
$(document).ready(function(){
$.ajax({
url: "http://localhost/charta.php",
method: "GET",
success: function(data) {
console.log(data);
var region = [];
var sup = [];
for(var i in data) {
region.push("region " + data[i].nom_reg_12);
sup.push(data[i].aq);
}
var chartdata = {
labels: region,
datasets : [
{
label: 'Superficie(m²)',
backgroundColor: 'rgba(77, 214, 104, 0.75)',
borderColor: 'rgba(77, 214, 104, 0.75)',
hoverBackgroundColor: 'rgba(77, 214, 104, 1)',
hoverBorderColor: 'rgba(77, 214, 104, 1)',
data: sup
}
]
};
var ctx = $("#mycanvas");
var barGraph = new Chart(ctx, {
type: 'bar',
data: chartdata
});
},
error: function(data) {
console.log(data);
}
});
});
为了确保第二步正常工作,我用默认值替换$_POST(['id_espece'])
并且PHP文件返回的JSON格式不是空的,所以我认为问题出在第一步,我不是&# 39;不知道问题究竟在哪里
答案 0 :(得分:2)
为了在$_POST
数组中获取表单元素,它必须具有name
属性。将您的select
元素更改为名称:
<select class="pam" name="id_espece">
此外,$.post
没有您编写的success
函数。格式应为:
$.post ('/charta.php',
{id_espece:$('select.pam').val()},
function(data){
console.log(data);
window.location = "http://localhost/charta.php";
});
答案 1 :(得分:0)
已编辑:从here开始,您似乎正在向PHP发送JSON格式,因此无法在$ _POST上解析它,您需要获得完整的正文
试试这个:
$data = json_decode(file_get_contents('php://input'), true);
print_r($data);