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 = 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 に答える