我有这个“阅读更多”链接:
echo '<p>'.$readNewsResult['content'].'<a class="test" href="#fancybox'.$readNewsResult['id_news'].'">Read More</a></p>';
当我点击此链接时,我的目标是更新我的新闻表的视图列。
所以我有一个jQuery,我传递了我的新闻ID,它工作正常,当我点击“阅读更多”链接时,我收到一条警告信息:“action = update&amp; update = 311”,其中311是我点击的新闻的ID。
我的jQuery直到现在:
$(function(){
var read = $('.news');
read.on('click','.test',function(){
var updateid = $(this).attr("id");
var updatedata = "action=update&update="+updateid;
alert(updatedata);
$.ajax({
data: updatedata,
beforesend: '',
error: '',
success: function(updateR)
{
alert(updateR);
}
});
});
});
但现在使用php,我试图获取更新操作和ID,并在我的新闻表上进行更新,但它无法正常工作,因为我似乎从未进入切换状态。
我试图在我的案例中给出一些“回声”,当我点击我的“阅读更多”链接时,我的回声永远不会出现。
你看到问题出在哪里了吗?
$action = $_POST['action'];
switch($action)
{
case 'update':
$id = $_POST['id'];
$updateViews = $pdo->prepare("UPDATE news SET views=:views WHERE id=:id");
$updateViews->bindValue(':views', '1');
$updateViews->bindValue(':id', $id);
$updateViews->execute();
break;
}
答案 0 :(得分:1)
至少,您尝试在PHP中使用$_POST['id']
,但实际上是在创建一个名为update
的URL参数,其中包含JavaScript中的ID。
实际问题是您缺少$.ajax
来电的网址参数。
您还在此行中命名var udpdatedata
:
var udpdatedata = "action=update&update="+updateid;
但在updatedata
电话中引用$.ajax
:
data: updatedata,
因此,您的查询参数永远不会添加到不存在的URL中。
额外的一个:
sucess: function(updateR)
实际拼写为success
,请注意双c。
答案 1 :(得分:1)
您的ajax控制器网址在哪里,我的意思是url
以及通话类型type
,
$.ajax({
type: 'POST',
url: '/url/myphpfunction',
data: updatedata,
beforesend: '',
error: '',
sucess: function(updateR)
{
alert(updateR);
}
});
这是教程http://blog.teamtreehouse.com/beginners-guide-to-ajax-development-with-php
答案 2 :(得分:1)
你的ajax功能有些问题。第一个是你应该通过值的对象而不是字符串。然后,您需要指定一个获取脚本的方法。然后,您需要设置脚本的URL。请参阅以下评论:
$(function(){
var read = $('.news');
read.on('click','.test',function(){
var updateid = $(this).attr("id");
// pass data as a JS object
var udpdatedata = {action:'update', update:updateid};
alert(udpdatedata);
$.ajax({
// set the method to post
type: "POST",
// the URL to your PHP script
url: "pathtoscript/script.php"
data: updatedata,
beforesend: '',
error: '',
success: function(updateR)
{
alert(updateR);
}
});
});
});
你的PHP也有错误,你正在通过'更新',而不是'id':
$action = $_POST['action'];
switch($action)
{
case 'update':
// you're passing through 'update', not 'id'
$id = $_POST['update'];
$updateViews = $pdo->prepare("UPDATE news SET views=:views WHERE id=:id");
$updateViews->bindValue(':views', '1');
$updateViews->bindValue(':id', $id);
$updateViews->execute();
break;
}