2010-01-20 72 views
0

我通过POST方法发送5个不同的数据到一个php文件。数据全部是整数。我想将所有这些整数值相加以产生一个总和。php POST求和

$.post(
     "user_submit.php", 
     {score: $('#ques'+qn).find('input[name=vote]:checked').val() }, 
     function(data){ 
      $("#ques"+qn).hide(); 
      ++qn; 
      $("#ques"+qn).show(); 
     }); 
    }); 
在php文件

它没有加起来的值。我究竟做错了什么?

+0

请问您能显示'print_r($ _ POST);'返回什么? – Crozin 2010-01-20 19:27:13

+0

是$分数是错误的还是$总数不累计?可能会有助于显示更多的你的PHP文件。 – smack0007 2010-01-20 19:28:12

回答

2

如果你是print_r($_POST['score']),你会发现它实际上是一个数组,而不是一个单一的值。改为尝试类似$total += array_sum($_POST['score']);

+0

对不起,请参阅有关解码JSON序列化字符串的其他解答。我忘了jQuery这样做。 – 2010-01-20 19:40:22

1

从jQuery $ .post提交JSON编码的字符串到服务器;你实际上正在提交一个JavaScript数组,需要先通过json_decode来处理,然后再操作。

正如其他海报的建议,做一个print_r($_POST['score'])会显示这很清楚。

0

bkuhns是在正确的道路上。虽然我不认为,你的分数不是任何数组。 AFIK $ .searialize不是recusive,所以你会得到'Object'的分数。尝试使用此为您的$。员额的data.score关键:

function(){ 
    var score = new Array(); 
    $('#ques'+qn).find('input[name=vote]:checked').each(function(){ 
    score.push($(this).val()); 
    }); 
    return score.join(','); 
} 

,并在PHP中:

$scores = explode(',',$_POST['score']); 

然后依次通过$scores增加$total。或者你可以使用array_sum作为bkuhns的建议。

+0

是的,我忘了JSON序列化的字符串部分。一旦字符串被解码,'array_sum()'将是你最简单的解决方案。 – 2010-01-20 19:37:49