2017-02-10 96 views
0

我想通过Ajax的一些数据,但必须有一些错误,因为结果是空如何通过Ajax从MySQL获取数据?

脚本:

<script> 
function showUser(value) { 
    var values = $(this).serialize(); 

    $.ajax({ 
     url: "test.php", 
     data: { 
      id: value 
     }, 
     type: "POST", 
     success: function(data){ 
      $("#result").html(data); 
     } 
    }) 

} 
</script> 

HTML:

<form> 
    <select name="users" onchange="showUser(this.value)"> 
     <option value="">Select a person:</option> 
     <option value="1">Peter Griffin</option> 
     <option value="2">Lois Griffin</option> 
     <option value="3">Joseph Swanson</option> 
     <option value="4">Glenn Quagmire</option> 
    </select> 
</form> 
<br> 
<div id="result"></div> 

test.php的:

<?php 
$id = @$_POST['id']; 

$pdo = $db->query('SELECT * FROM people WHERE id = "' . $id . '"'); 

while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) { 
    echo $row['id']; 
}  

?> 
+0

'数据:{ ID:值 }'我觉得应该是'数据:{ id:值 },' –

+0

改变了,谢谢。但仍然没有得到结果 – Jarla

+0

错误必须在'数据',因为如果我'提醒(数据);'那么它是空的 – Jarla

回答

1

HTML: -

<select id ="myselect" name="users" onchange="showUser()"> 
     <option value="">Select a person:</option> 
     <option value="1">Peter Griffin</option> 
     <option value="2">Lois Griffin</option> 
     <option value="3">Joseph Swanson</option> 
     <option value="4">Glenn Quagmire</option> 
</select> 
<br> 
<div id="result"></div> 

的Javascript: -

<script> 
    function showUser() { 
     $.ajax({ 
      url: "test.php", 
      data: { 
       id: $("#myselect option:selected").val(); 
      }, 
      type: "POST", 
      success: function(data){ 
       $("#result").html(data); 
      } 
     }); 
    } 
</script> 

PHP: -

<?php 
    if(isset($_POST['id'])){ 
     $id = $_POST['id']; 

     // i don't know from where $db is coming so check yourself 

     $pdo = $db->query('SELECT * FROM people WHERE id = "'.$id.'" LIMIT 1'); 
     while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) { 
      echo $row['id']; 
     } 
    }else{ 
     echo "Please select value from select box"; 
    }        
    ?> 

注: -

同时阅读有关prepared statements并使用它们来防止从SQL Injection。由于

1

如果你不想使用jQuery的,你可以做这样的事情: -

var http = new XMLHttpRequest(); 
var url = "****Some URL (php etc to process the sql data)******"; 
var p = hex_sha512(userPass.value); 
var params = "email="+userEmail.value+"&p="+p+"&adminStat=true"; 

http.open("POST", url, true); 
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
http.send(params); 

http.onreadystatechange = function() { 
    if (http.readyState == 4) { 
     //Todo 
     // check addition stat and go to the destination page 
     if (http.responseText == "success") { 
      window.location = "*****Destination URL********"; 
     } else { 
      alert("error"); 
     } 
    } 
};