【发布时间】:2017-12-18 16:03:49
【问题描述】:
我试图通过两个步骤获得结果:
- 第一步我想从 HTML(下拉列表)在 PHP 文件中发布一个值:
这是我试过的:
<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); ?>
这里的问题是 $_POST ('id_espece') 的值是“NULL”,即使是从下拉列表中选择的值;但是当我将成功功能替换为:
function(res){ $('#txt').html(res); }
它在<div id="txt"></div> 中返回我想要的结果(JSON 输出)
但不是在 PHP 文件中,当它返回一个错误时 `
'未定义索引:id_espece'`
-
第二步我想将同一个PHP文件的输出GET到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格式不为空,所以我认为问题出在第一步,我不知道问题到底出在哪里
【问题讨论】:
-
这里有一个错字:-
$user_id = isset($_POST["is_espece"])?$_POST["id_espece"]:"";这里应该是$_POST["id_espece"]而不是$_POST["is_espece"] -
$_POST 无法访问获取参数,请改用 $_REQUEST
-
给你的
select一个名字属性,name="id_espece" -
@JayBlanchard 他正在使用 ajax 发送数据,它是:-
{id_espece:$('select.pam').val()},所以后变量将是$_POST['id_espece']而不是is_espece -
@AlivetoDie 我正在使用 id-espece 而不是 is-espece 我只是编辑我的帖子
标签: javascript php jquery json ajax