我的更新与PHP和jQuery Ajax无法正常工作

时间:2014-05-24 02:20:31

标签: php jquery ajax

我有这个“阅读更多”链接:

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;
}

3 个答案:

答案 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;
}