0

我正在尝试将测试分数传递给 php 脚本,然后将结果通过电子邮件发送给用户。我将分数输出到控制台,效果很好(显示我的百分比),但是当发送电子邮件而不是分数时,它显示为 NaN。

这是我的代码...

 score = roundReloaded(trueCount / questionLength * 100, 2);

          $.ajax({
                  type: 'POST',
                  url: config.sendResultsURL,
                  data: { q:score },
                  complete: function () {console.log("Sending complete. The score was "+ score + "%");}
                });

还有我的 emailData.php 文件...

$body = "You scored " . $_POST['q'] . "%";
$to = "someone@test.com";
$email = 'admin@test.com';

$subject = 'Results';
$headers  = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";

// Send the email:
$sendMail = mail($to, $subject, $body, $headers);

有人可以帮助我并告诉我我做错了什么吗?

谢谢

4

2 回答 2

0

如果字符串的第一个字符不能转换为数字。然后返回 NaN 。

所以这里的转换问题

于 2012-08-13T12:45:47.783 回答
0

NaN 说它不是一个数字。尝试将 $_POST['q'] 转换为如下数字:

$_POST['q']*1

或者可能是形式方面的问题,尝试将 score 变量转换为字符串:

score = roundReloaded(trueCount / questionLength * 100, 2);

          $.ajax({
                  type: 'POST',
                  url: config.sendResultsURL,
                  data: { q:score+'' },
                  complete: function () {console.log("Sending complete. The score was "+ score + "%");}
                });

编辑:试试这个以获得更好的日志记录:

score = roundReloaded(trueCount / questionLength * 100, 2);
var params = {q:score};
console.log(JSON.stringify(params));    
          $.ajax({
                  type: 'POST',
                  url: config.sendResultsURL,
                  data: params,
                  complete: function () {console.log("Sending complete. The score was "+ params.q + "%");}
                });
于 2012-08-13T12:40:50.240 回答