2017-06-14 165 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