2011-04-09 49 views
1

我几乎没有创建一个脚本(因为我只是ajax的初学者),实际上我从某处复制了它的某个部分(ajax脚本)。但是,当我点击链接(投票了/投票下来)没有任何反应,甚至没有在Mysql数据库更改的价值,但点击提交按钮我得到了我的MySql数据库的变化!这里是我的代码 -为什么我的Ajax发布脚本不起作用?

- ::: - HTML部分(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非常陌生,所以我无法找到任何解决方案。

+1

什么是您的控制台说?有没有任何JavaScript错误?另外,添加一些警报,看看你的代码得到的地方,以及它不在... – Nanne 2011-04-09 12:53:10

+1

你用过小提琴手或萤火虫来检查ajax调用是否被尝试? – Munzilla 2011-04-09 12:53:54

+0

不,我没有,但我会在一分钟内。 – 2011-04-09 12:55:15

回答

2

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

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

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

+0

感谢哥们,这工作得更好!它现在正在显示消息!谢谢! – 2011-04-09 13:45:20

+0

没问题,祝你阿贾克斯之旅好运,一旦你掌握了它的窍门,这真是一次有趣的旅行! – OneOfOne 2011-04-09 13:46:58

3

如果这是严格的代码(我的意思是,如果您刚刚从您的真实.php文件中复制/粘贴),则第一个.php文件的第二个脚本块中存在拼写错误。

javasript - > javasCript

试试看。

+0

感谢friguron它的工作!但现在我没有收到任何消息!请帮我解决一下这个。 – 2011-04-09 13:22:03

相关问题