通过ajax将变量发送到php

时间:2017-06-14 13:21:20

标签: javascript php jquery ajax

我正在尝试通过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代码中。 问题是,我的数据表不是基于用户输入创建的。 谢谢!

1 个答案:

答案 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);