为什么我的Ajax发布脚本不起作用?

时间:2011-04-09 12:50:35

标签: php ajax jquery ajaxcontroltoolkit

我几乎没有创建一个脚本(因为我只是ajax中的初学者),事实上我已经从某个地方复制了它的一些部分(ajax脚本)。但是,当我点击链接(投票/投票)时,即使Mysql数据库中的值没有变化也没有任何反应,但点击提交按钮后,我的MySql数据库发生了变化!这是我的代码 -

- ::: - HTML PART(test.php) - ::: -

<html>
       <title>
               TEST
       </title>
       <head>
              <script type="text/javascript" src="jquery.1.4.4.js"></script>
              <script type="text/javascript">
                        function vote(type)
                        {
                          $.ajax({
                              'url': 'test.func.php',
                              'type': 'POST',
                              'dataType': 'json', 
                              'data': {type: type},
                              'success': function(data)
                               {
                                   if(data.status)
                                   {
                                       if(data.voted)
                                        {
                                             $(document).ready(function () {
                                               $("span#status"+type).attr("innerHTML","You have voted up!");
                                             });
                                        }
                                        else
                                        {
                                             $(document).ready(function () {
                                               $("span#status"+type).attr("innerHTML","You have voted Down!");
                                             });
                                        }
                                    }
                               },
                               beforeSend: function()
                                 {
                                      $(document).ready(function () {
                                       $("span#status"+type).attr("innerHTML","Voting....");
                                      });
                                 },
                                  'error': function(data)
                                  {
                                    $(document).ready(function () {
                                      $("span#status"+type).attr("innerHTML","An error occureed");
                                    });
                                  }
                                });
                          }
                </script>
       </head>
       <body>
              <a href="#" onclick="vote('up')" > Vote Up </a>
              <span id="status_up" ></span>
              <br>
              OR
              </br>
              <a href="#" onclick="vote('down')" > Vote Down </a>
              <span id="status_down" ></span>
       </body>
</html>

- ::: - PHP PART(test.func.php) - ::: -

<?php

    function db_connect($i)
    {
         if(isset($i))
         {
              if(mysql_connect('localhost', 'root', 'root'))
              {
                   if(mysql_select_db($i))
                   {
                        return;
                   }
                   else
                   {
                        echo 'ERROR';
                   }
              }
              else
              {
                  echo 'ERROR';
              }
         }
         else
         {
             echo 'ERROR';
         }
    }
if($_POST)
{
 db_connect('tests');
 $vote_type=$_POST['type'];
 $post_id = '123';
 $query = mysql_query("SELECT * FROM test WHERE post_id='$post_id'");
 $cur_vote_get = mysql_fetch_array($query);
 $vote_up = $cur_vote_get['votes']+1;
 $vote_down = $cur_vote_get['votes']-1;
 if($vote_type=='up')
 {
   mysql_query("UPDATE test SET votes='$vote_up' WHERE post_id='$post_id'");
   return json_encode(array("status" => true, "voted" => true));
 }
 elseif($vote_type=='down')
 {
   mysql_query("UPDATE test SET votes='$vote_down' WHERE post_id='$post_id'");
   return json_encode(array("status" => true, "voted" => false));
 }
}

?>

解决了JavaScript错误!

一切都解决了!

由于我对Ajax很新,所以我无法找到任何解决方案。

2 个答案:

答案 0 :(得分:3)

如果你的代码很严格,(我的意思是,如果你只是从真正的.php文件中复制/粘贴它),那么第一个.php文件的第二个脚本块就会出现拼写错误。

javasript - &gt; JAVASCRIPT

试一试。

答案 1 :(得分:2)

你没有回应json,你正在回应随机文本('Vote up'),这将打破ajax json解析器。

删除echo 'Voted!';并尝试echo json_encode(array("status" => true, "voted" => false));

您也可以跳过SELECT查询并执行:UPDATE test SET votes=votes+1 WHERE post_id='$post_id'