我试图通过点击使用AJAX的链接来更新MySQL,但我已经打了一堵墙。我有代码但它不工作。SQL更新通过A HREF
这里的AJAX:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
//bind a listener to "click" event on links with class "markviewed"
$('a.markviewed').click(function(event) {
//prevent default behavior just in case
event.preventDefault();
//get ids from clicked <a>
var myid = $(this).attr('data-myid');
var postid = $(this).attr('data-postid');
//ping the address to mark clicked link as viewed
$.ajax('http://mywebsite.com/mark_viewed.php?myid=' + myid + '&postid=' + postid');
//redirect to the link in the href attribute
window.location.href = $(this).attr('href');
});
});
</script>
这应该创建一个A HREF类,当点击命中mywebsite.com/mark_viewed.php与发送为$myid
和$postid
关键变量更新我的数据库。
这里是mark_viewed.php:
<?php
$con=mysqli_connect("XXX","XXX","XXX","XXX");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// get values sent from address bar
$myid=$_GET['myid'];
$postid=$_GET['postid'];
mysqli_query($con,"UPDATE comments SET status='viewed' WHERE to_id ='$myid' AND id='$postid'");
mysqli_close($con);
?>
最后,这是用户看到的链接:
$myid = $row['user_id']; // my id
$name = $row['board_name']; // collection name
$boardid = $row['board_id']; // collection id
$postid = $row['pin_id']; // post id
$url = $row['pin_url']; // image url
echo "<li><a href='/board/pins/$boardid/$postid' data-myid=' . $myid . ' data-postid=' . $postid . ' class='markviewed'>";
echo "<img src='$url' height='50' width='50'>";
echo "New comment in $name.";
echo "</a></li>";
然而,在测试中这是行不通的。点击时的链接只是与新评论和数据库冲突到页面。
我在做什么错?
删除'window.location.href = $(this).attr('href');' – putvande
您的ajax调用是否被创建?如果是这样发生了什么,你是否得到一个错误? – PugFugly
您应该,不需要..在查询中使用之前,您需要验证/清除您的$ myid和$ postid变量。请记住,用户输入是EVIL! – Babblo