2017-06-14 162 views
0

我想通过ajax发送一个输入值到php,但我似乎无法得到这个权利。我试图根据用户输入创建一个数据表。通过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

您还没有提到究竟是不是工作,而是你是不是发送POST请求,你需要有'类型:“后”'为此,你正在发送你的数据名为'url'而不是'id1' –

+1

请给我们更多关于“它不起作用”的细节。顺便说一句,您不要在Ajax调用中设置“方法”。默认数据发送到$ _GET而不是$ _POST。 [看到JQuery文档](http://api.jquery.com/jquery.ajax/) – Debflav

+0

...大概你是包括* jQuery *脚本,因为'$(document).ready('(etc)isn 't技术上的JavaScript?让我们明显的方式... – CD001

回答

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); 
+0

仍然无法正常工作。我怎么能debbug它在js? – 1pa

+0

更新我的回答 – CodeGodie

+0

这就是答案!非常感谢你!! :) – 1pa