Javascript 使用Ajax发布和获取相同的PHP文件(JSON)
我试图通过两个步骤获得一个结果:Javascript 使用Ajax发布和获取相同的PHP文件(JSON),javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我试图通过两个步骤获得一个结果: 第一步,我想从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);
- 第一步,我想从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>';
?>
我的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); ?>
它在
但当PHP文件返回一个错误`
'未定义索引:id_spece'`
- 第二步,我想将同一个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); } }); });
为了确保第二步工作正常,我用默认值替换了
$\u POST(['id_spece'])
,PHP文件返回的JSON格式不是空的,因此我认为问题出在第一步,我不知道问题到底出在哪里为了在$\u POST
数组中获取表单元素,它必须具有name
属性。将选择元素更改为具有名称:
<select class="pam" name="id_espece">
编辑后的:看起来您正在向PHP发送JSON格式,因此它无法在$\u POST上解析它,您需要获得完整的正文
试试这个:
$data = json_decode(file_get_contents('php://input'), true);
print_r($data);
这里有一个输入错误:-$user\u id=isset($\u POST[“is\u specpe”])?$\u POST[“id\u specpe”]:“”
这里应该是$\u POST[“id_spece”]
而不是$\u POST[“is_spece”]
get参数不能被$\u POST use$\u请求访问,而不是给你的select
一个name属性,name=“id_spece”
@JayBlanchard他正在使用ajax发送数据,结果是:-{id_spece:$('select.pam').val(),
所以post变量将是$\u post['id_specpe']
不是是_specpe
@AlivetoDie我正在使用id specpe不是specpe我只是编辑我的post做或不做,没有“尝试”。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。
<select class="pam" name="id_espece">
$.post ('/charta.php',
{id_espece:$('select.pam').val()},
function(data){
console.log(data);
window.location = "http://localhost/charta.php";
});
$data = json_decode(file_get_contents('php://input'), true);
print_r($data);