2014-03-30 66 views
0

尝试修改RateIT星级评分系统以在SQL db中存储投票。用户输入脚本后,mySQL会记录数据。但是我无法从SQL中收到更新的平均值。使用AJAX GET或POST

如何运行查询并将其发送回AJAX并显示它。应该使用POST还是GET?

我非常困惑,为此挣扎了好几天。我在这里和RateIT一起看过例子和以前的问题,但似乎没有任何合适的。

代码:想结果在ID显示= “响应”

HTML和JS

<div id="products"> 
     <div> 
     <ul id="response"> 
     </ul> 
     </div>  
    </div> 

    <script type ="text/javascript"> 
     $('#products .rateit').bind('rated reset', function (e) { 
      var ri = $(this); 
    var value = ri.rateit('value'); 
      var productID = ri.data('productid'); 
       ri.rateit('readonly', true); 
      $.ajax({ 
       url: 'rate.php', 
       data: { productID: productID, value: value }, 
       type: 'POST', 
       success: function (data) { 
        $('#response').append('<li>' + data + '</li>'); 
       }, 
       error: function (jxhr, msg, err) { 
        $('#response').append('<li style="color:red">' + msg + '</li>'); 
       } 
      }); 
     }); 
    </script> 

PHP

 <?PHP 
     $con=mysqli_connect ("host","user","pass#","dbname"); 
     mysqli_query($con,"INSERT INTO ratings (storyidr, rank, entry_date) VALUES ('$_POST[productID]','$_POST[value]',now())"); 
     mysqli_close($con); 
     exit; 
       ?> 

预先感谢您!

编辑PHP代码:

$result=mysqli_query($con,"INSERT INTO ratings (storyidr, rank, entry_date)   VALUES  ('$_POST[storyidr]','$_POST[value]',now()) THEN SELECT AVG(rank) AS avrank from ratings WHERE storyidr=$storyidr;"); 

$avgrate = $data['avrank']; 
if(!$result) 
{ 
    $arr = array ('status'=>'fail'); 
    echo json_encode($arr); 
} 
else 
{ 
    $arr = array ($avgrate); 
    echo json_encode($arr); 
} 
    exit; 
?> 
+0

2个问题?它是否将数据添加到收视率? storyidr的数据类型是什么? –

+1

错误,所以它看起来像你的意思是你的rate.php返回新的平均?你为什么不那样做呢? – ysth

+0

它将值添加到SQL表中,是的。数据是两件事。 1.代表评分(1-5)的#。 2.被评价商品的ID号,我在上面的代码中标注了“商品ID”。我只是不知道如何显示来自SQL的新值。 – rhill45

回答

1

您可以使用JSON格式使用json_encode

$result=mysqli_query($con,"INSERT INTO ratings (storyidr, rank, entry_date) VALUES ('$_POST[productID]','$_POST[value]',now())"); 

if(!$result) 
{ 
     $arr = array ('status'=>'fail'); 
     echo json_encode($arr); 
} 
else 
{ 
     $arr = array ('status'=>'success'); 
     echo json_encode($arr); 
} 

在成功回调发回的结果,你可以使用object.status有状态(data.status在你的情况)