2014-01-16 65 views
0

我刚开始学习AJAX,并且我已经遇到了一些麻烦。
我创建的数据库和表usersid, name, email字段。
后来我创建的PHP文件db.php与数据库发送AJAX获取请求

<?php 
$dblocation = "localhost"; 
$dbname = "test5"; 
$dbuser = "root"; 
$dbpasswd = ""; 

$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd); 
if (!$dbcnx) { 
    exit ("<p>Error.</p>"); 
} 

if (! @mysql_select_db($dbname, $dbcnx)) { 
    exit ("<p>Error.</p>"); 
} 
?> 

连接,创建的文件get-user.php返回答案为Ajax请求

​​

这是我index.php文件

<!DOCTYPE html> 
<html> 
    <head> 
     <title>index</title> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
     <script> 
      $(document).ready(function() { 
       $('#button-1').on('click', function() { 
        var id = $('#user-id').val(); 
        $.ajax({ 
         type: 'GET', 
         url: 'get-user.php', 
         datatype: "html", 
         data: id, 
         success: function (data) { 
          alert(data); 
         } 
        }); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <h2>Title</h2> 
     <input name="id" id="user-id" type="text" size="15" /> 
     <button id="button-1">Get data</button> 
</html> 

我想输入数字,点击按钮,并从d atabase,但我只得到空警报。如何使它工作?
对不起,我只是新手。

回答

3

这些变化要求:

阿贾克斯:data: id,data: "{id : id},
PHP:return $result;echo $result;
PHP & MySQL的:

$result = mysql_query("SELECT name, email FROM users WHERE id='$id'", $dbcnx); 
$row = mysql_fetch_array($result); 
return $result[0] . ";" . $row[1]; 
+0

非常感谢帮助!我改变了代码,但没有得到正确的用户数据,我收到了一些奇怪的警告,我不明白这是什么意思? http://i.stack.imgur.com/tQtmV.png请问你能解释一下,有什么问题? –

+0

@ truslivii.lev,问题是你从MySQL中提取资源,但没有将它抽象为AJAX Call可以理解的形式。您应该在'return'命令之前添加我编辑的以下代码。 –

+0

你能解释一下我需要在代码中添加什么才能使其工作? –

1

传递参数的正确方法是这样的

$.ajax({ 
     type: 'GET', 
     url: 'get-user.php', 
     datatype: "html", 
     data: { id: id }, 
     success: function (data) { 
      alert(data); 
     } 
    }); 

php回报这样

<?php 
include ("db.php"); 
$result = mysql_query("SELECT name, email FROM users WHERE id='$id'", $dbcnx); 
$fetch=mysql_fetch_array($result); 
return $fetch["email"]; 
?> 
+0

非常感谢您的帮助!我改变了代码,但没有得到正确的用户数据,我收到了一些奇怪的警告,我不明白这是什么意思? http://i.stack.imgur.com/tQtmV.png请问你能解释一下,有什么问题? –

+0

看到我编辑的答案为PHP部分 –

+0

非常感谢您的帮助! –

1

值试试这个,

的Javascript:

$.ajax({ 
    type: 'GET', 
    url: 'get-user.php', 
    datatype: "html", 
    data: {id:id}, 
    success: function (data) { 
      alert(data); 
     } 
    }); 

在GET-user.php的

<?php   
    if(isset($_GET['id'])){ 
     include ("db.php"); 
     $id = $_GET['id']; 
     .... 
    } 
?> 

注:使用mysqli_ *函数或PDO,而不是mysql_ *函数(不建议使用)

+0

mysql_query不会阻止sql注入 – sas

+0

非常感谢您的帮助! –

1

你都非常接近,但也有你需要改变一些东西。

你的Ajax调用的第一内侧:

$.ajax({ 
    type: 'GET', 
    url: 'get-user.php', 
    datatype: "html", 
    data: {'id': id}, 
    success: function (data) { 
     alert(data); 
    } 
}); 

通知在data选项的变化。

其次,在您的get-user.php之内,请参阅$_GET['id']的值。

最后,而不是return你想echo的回应。

+0

非常感谢您的帮助!我改变了代码,但没有得到正确的用户数据,我收到了一些奇怪的警告,我不明白这是什么意思? http://i.stack.imgur.com/tQtmV.png请问你能解释一下,有什么问题? –

+1

你需要在'$ result'上使用'mysql_fetch_row'。看看这个例子:http://www.php.net/manual/en/function.mysql-fetch-row.php –

+1

非常感谢您的帮助! –

1

Ajax代码

data: {id: id}; 

PHP代码

代替的mysql_query使用pdo,你mysql_query使用代码它不是防止SQL注入。

include ("db.php"); 

$id = $_GET['id']; 

$stmt = $pdo->prepare('SELECT name, email FROM users WHERE id = :id'); 
$stmt->execute(array('id' => $id)); 
$result = $stmt->get_result(); 

echo $result; 

或使用mysqli

$stmt = $dbConnection->prepare('SELECT name, email FROM users WHERE id = ?'); 
$stmt->bind_param('id', $id); 

$stmt->execute(); 

$result = $stmt->get_result(); 

echo $result; 
+0

非常感谢您的帮助! –