【发布时间】:2014-09-06 21:13:42
【问题描述】:
我想要做的是:当用户键入他们的电子邮件时,我的 ajax 代码将运行并显示用户在密码输入框中传递。
问题是,当我的 ajax 代码将电子邮件发送到 search.php 时,我的 search.php 没有将数据提供给我的 ajax 以显示。
我认为问题出在我的 search.php 中,因为当我在索引中键入电子邮件后转到 search.php 时,search.php 只是空白,没有显示任何数据。
索引(表格):
email <input type="text" id="query" name="myemail" class="search_textbox" /><br />
Your Password <input type="text" id="mypass" name="mypass" readonly="readonly" /><br />
<script>
$(document).ready(function(){
$('.search_textbox').on('blur', function(){
$('#query').change(updateTextboxes);
updateTextboxes()
})
$('.search_textbox').on('keydown', function(){
$('#query').change(updateTextboxes);
updateTextboxes()
})
$('#query').change(updateTextboxes);
var $mypass = $('#mypass');
function updateTextboxes(){
$.ajax({
url:"search.php",
type:"GET",
data: { term : $('#query').val() },
dataType:"JSON",
success: function(result) {
var ii = 1;
for (var i = 0; i < result.length; i++) {
$mypass.val(result[i].value).show().trigger('input');
ii++;
}
}
});
};
});
</script>
搜索.php
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
$host = "localhost";
$user = "root";
$pass = "";
$db = "test";
$dbc = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (isset($_GET['term'])) {
$q = $_GET['term'];
$sql = "SELECT password FROM students WHERE email = :term";
$query = $dbc->prepare($sql);
$query->bindParam(':term', $q);
$results = $query->execute();
$data = array();
while ($row = $results->fetch()) {
$data[] = array(
'value' => $row['password']
);
}
header('Content-type: application/json');
echo json_encode($data);
}
?>
【问题讨论】:
-
尝试
echo $_GET['term'];以了解您是否从index.php获取值。 -
@afaolek 我试过了,它回显了我在索引页面中输入的电子邮件
-
3 件事。 first:我会使用
POST而不是GET!,second:在执行后添加print_r($result);,第三:做什么你认为一个用户有多少个密码?我想只有一个,所以你真的不需要一个while循环。并且无论如何都不需要while。如果您指定多个结果,请使用$results->fetchALL()。哦,header('Content-type: application/json');不需要 -
@Dwza 我使用 while 来获取所有值并将所有值放入一个数组中,然后将其发送到 ajax 以在用户键入他的注册电子邮件时在输入框中显示密码值。
-
语句
$results = $query->execute();返回一个bool。检查here;
标签: javascript jquery html ajax pdo