我正在尝试通过ajax向php发送输入值,但我似乎无法做到这一点。我正在尝试根据用户输入创建数据表。
这是我的代码:
<input class="form-control" id="id1" type="text" name="id1">
我的javascript代码:
<script type="text/javascript">
$(document).ready(function() {
var oTable = $('#jsontable').dataTable(); //Initialize the datatable
$('#load').on('click',function(){
var user = $(this).attr('id');
if(user != '')
{
$.ajax({
url: 'response.php?method=fetchdata',
data: {url: $('#id1').val()},
dataType: 'json',
success: function(s){
console.log(s);
oTable.fnClearTable();
for(var i = 0; i < s.length; i++) {
oTable.fnAddData([
s[i][0],
s[i][1],
s[i][2],
s[i][3],
s[i][4],
s[i][5],
s[i][6],
s[i][7]
]);
} // End For
},
error: function(e){
console.log(e.responseText);
}
});
}
});
});
</script>
我的php脚本:
<?php
$conn = pg_connect(...);
$id1 = $_POST["id1"];
$result = pg_query_params($conn, 'SELECT * FROM t WHERE id1 = $1 LIMIT 20', array($id1));
while($fetch = pg_fetch_row($result)) {
$output[] = array ($fetch[0],$fetch[1],$fetch[2],$fetch[3],$fetch[4],$fetch[5],$fetch[6],$fetch[7]);
}
echo json_encode($output);
?>
我不知道很多js但我的php是正确的我测试它。所以我想问题出在javascript代码中。 问题是,我的数据表不是基于用户输入创建的。 谢谢!
答案 0 :(得分:0)
更改
data: {url: $('#id1').val()},
为:
type: 'POST',
data: {id1: $('#id1').val()},
然而问题可能更大。您可能无法从PHP获取正确的数据。您可以通过在error
电话中添加ajax()
选项进行调试,如下所示:
$.ajax({
url: 'response.php?method=fetchdata',
type: 'POST',
data: {id1: $('#id1').val()},
dataType: 'json',
success: function(s){
},
error: function (xhr, status, errorThrown) {
console.log(xhr.status);
console.log(xhr.responseText);
}
});
然后检查浏览器的控制台输出,这应该会给你一些来自PHP的错误消息。
我的假设是,由于您使用的是dataType: 'json'
,因此ajax请求需要返回JSON标头,但PHP正在发送HTML / Text。要修复,请在回显JSON之前添加正确的标头:
header('Content-Type: application/json');
echo json_encode($output);