2012-08-01 194 views
0

我在收集從數據庫中獲取的數據時遇到了一些問題。不知道如何繼續。Ajax,PHP - 從數據庫中獲取

我做了什麼至今:

JQ:

$(document).ready(function(){ 

    $('#submit').click(function(){ 

    var white = $('#white').val(); 

    $.ajax({ 

    type:"POST", 
    url:"page.php", 
    data:{white:white} 

    }); 

    }); 

}); 

PHP(請page.php文件)迄今:

$thing = mysql_real_escape_string($_POST["white"]); 

..database connect stuff.. 

$query = "SELECT * FROM table1 WHERE parameter='$thing'"; 

if($row = mysql_query($query)) { 

while (mysql_fetch_array($row)) { 

    $data[]=$row['data']; 

} 

} 

我不知道什麼是如何發送數據並用ajax接收數據。

如果請求不成功,錯誤會怎麼樣?

ajax調用數據庫注入有多安全?

謝謝:)

+0

關於安全的事情 - 爲您做出處理它的腳本將它作爲安全。 – Fluffeh 2012-08-01 11:32:40

+1

我看到你正在使用mysql_real_escape字符串。在手冊頁(http://php.net/mysql_real_escape_string)中,您可以看到兩件事:1)建議切換到PDO(或mysqli)2)在調用它之前,應該連接到數據庫 – mishu 2012-08-01 11:36:04

+1

I'對不起,但回答這個問題需要編寫一個關於基本jQuery/ajax/php用法的教程,我懷疑有人會願意這樣做,並且網絡上有足夠的人。我可以給你一些提示,但看看:(JQ :)'.get()','$ .post()'; (PHP :)'json_encode()' – MiDo 2012-08-01 11:36:07

回答

7

你需要在一個$.ajax()參數success得到一次呼叫時

$('#submit').click(function(){ 

    var white = $('#white').val(); 
    if(white == '') 
    { 
     // display validation message 
    } 
    else 
    { 
     $.ajax({ 

     type:"POST", 
     url:"page.php", 
     data:{"white":white} 
     success:function(data){ 
      $('#someID').html(data); 
     } 

    }); 

    }); 

無論你在page.php回聲(HTML標籤或變量)的響應將顯示在其ID是someID,優選保持元件的<div>

page.php的元件,可以捕獲在輸入輸入的數值元素使用$_POST['white'],並用它做任何你想要的DB行動

0
To send out data to you can write following line at the end : 

    echo json_encode($data);exit; 


    To receive response and errors when request is not successful in ajax : 

jQuery.ajax({ 
type:"POST", 
    url:"page.php", 
    data:{white:white}, 
    asyn: false, 
    success : function(msg){  
      var properties = eval('(' + msg + ')'); 

      for (i=0; i < properties.length; i++) { 
      alert(properties[i]); 
      } 
    }, 
    error:function (XMLHttpRequest, textStatus, errorThrown) { 
     alert(textStatus); 
    } 
0
For Feeling more safety do the following things: 
    1. Open a Session. 
    2. Detect Referrer. 
    3. Use PDO Object instead mysql_real_escape_string 
    4. Detect Ajax call : 

    if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || 
    strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !='xmlhttprequest') { 
     //Is Not Ajax Call! 
    }