我正在努力实现以下目标: 当您单击H1时,JQuery从服务器获取某些密钥的信息并将其发送回用户,其中jquery显示提示此信息。 PHP中的server.php
$link = mysql_connect("mysql.hostinger.com.ua", "_my_login_", "_my_password_") or die("NOOO!");
mysql_select_db("u994953720_db");
$key;
if(isset($_GET['Key'])) {
$key = $_GET['Key'];
$selected = mysql_query("SELECT * FROM `Table` WHERE `Key`='".$key."'", $link);
$selected_row = mysql_fetch_array($selected);
if($selected_row!=null){
$response = array(
"result" => $selected_row['Value']
);
echo json_encode($response);
exit;
}else{
$response = array(
"result" => "Nope."
);
echo json_encode($response);
exit;
}
}
主页中的jQuery:
$('h1').on('click', function () {
$.ajax({
type: 'GET',
url: '/server/server.php',
data: {
'Key': 'Roman'
},
success: function(data) {
alert(data.result);
},
dataType: 'json'
});
});
但我没有任何影响。你们能告诉我如何解决我的错误吗?
P.S。Working not working example
P.S.I我刚开始学习PHP,所以可能会有一些非常愚蠢的错误。
更新:我已经完成了你们所说的一切(我还不关心安全性),但它仍然不起作用。在控制台中有以下消息:
XHR finished loading: GET "http://site0.hol.es/server/server.php?Key=Roman".
当我将错误方法包含在ajax中时:
error: function(requestObject, error, errorThrown) {
alert("request objqect: " + requestObject + " . Error: " + error + " . Error thrown: " + errorThrown);
}
,有一个警告:解析错误,意外令牌<
更新1:我明白了,我的页面被写入json结果,如here,但我没有任何其他的回声,它怎么会发生?
更新:我已经发现,PHP正在向整个页面发送它所放置的内容,所以,我只是将其删除了)但是,谢谢你对安全的评论,我会纠正它
答案 0 :(得分:1)
通过查看您的网站,我可以看到您正在返回HTML + JSON。尝试在回声后抛出一个出口:
echo json_encode($response);
exit;
此外 - 您根本没有处理无数据状态。你应该做的事情如下:
if(isset($_GET['Key'])) {
// your valid request code
} else {
echo json_encode(array('result' => false, 'reason' => "You must send a Key"));
}
此外,您可以通过直接命中端点和var_dumping /调试在那里运行的代码来调试PHP代码。首先,当您转到http://site0.hol.es/server/server.php?Key=Roman
时,$selected_row = mysql_fetch_array($selected);
的输出是多少
最后 - 正如其他人所提到的那样,只是一点警告。您对SQL注入攻击持开放态度。考虑使用PDO -
PDO是什么: http://php.net/manual/en/book.pdo.php
为什么要使用它: http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
如何使用它:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers