1

これは変数をエコーするphpページです$correct。その初期値は0です。値の増分とともに変化しますが、jquery ajaxメソッドを使用して他のページにエコーした後にこの値をロードすると0、増分値のみが返されます。

<?php

$i=1;
while($i<=10) {

    $answer="answer_".$i;
    ${"answer_$i"}=$_POST[$answer];
    $i++;
}

$correct=0;

if($answer_1=="a")
$correct=$correct+10;
else {
    if($answer_1=="b" || $answer_1=="c" || $answer_1=="d")
        $correct=$correct-10;

}
if($answer_2=="a")
$correct=$correct+10;
else {
if($answer_2=="b" || $answer_2=="c" || $answer_2=="d")
            $correct=$correct-10;
}
if($answer_3=="a")
$correct=$correct+10;
else {
    if($answer_3=="b" || $answer_3=="c" || $answer_3=="d")
        $correct=$correct-10;
}
if($answer_4=="a")
$correct=$correct+10;
else
{   if($answer_4=="b" || $answer_4=="c" || $answer_4=="d")
        $correct=$correct-10;
}
if($answer_5=="a")
$correct=$correct+10;
else
{   if($answer_5=="b" || $answer_5=="c" || $answer_5=="d")
        $correct=$correct-10;
}
if($answer_6=="a")
$correct=$correct+10;
else
{   if($answer_6=="b" || $answer_6=="c" || $answer_6=="d")
        $correct=$correct-10;
}
if($answer_7=="a")
$correct=$correct+10;
else
{   if($answer_7=="b" || $answer_7=="c" || $answer_7=="d")
        $correct=$correct-10;
}
if($answer_8=="a")
$correct=$correct+10;
else {
    if($answer_8=="b" || $answer_8=="c" || $answer_8=="d")
        $correct=$correct-10;
}
if($answer_9=="a")
$correct=$correct+10;
else
{
    if($answer_9=="b" || $answer_9=="c" || $answer_9=="d")
        $correct=$correct-10;
}
if($answer_10=="a")
$correct=$correct+10;
else
{
    if($answer_10=="b" || $answer_10=="c" || $answer_10=="d")
        $correct=$correct-10;
}
echo "$correct";
?>

これは、この変数にアクセスする他のページのスクリプトですが、phpページで変数の値が変更されています$correctが、常に結果になりますか?0どうすればこれを修正できますか?

<script>
$(function(){
$('form').submit(function(event){
event.preventDefault();
$.ajax({
url:"results.php",
type:"POST",
success:function(result){
console.log(result);
$('#results').html("<p>"+result+"</p>");
}
});
});
});
</script>               
4

1 に答える 1

0

あなたはAJAXからPHPに答えを渡していない。
したがって、PHPの条件はいずれも満たされていません。
したがって、0を返します。

ポストリクエストでデータを渡すには、ajaxドキュメント(http://api.jquery.com/jQuery.ajax/)を参照してください。属性を確認する必要がありdataます。

あなたはこのようなものが欲しいでしょう:

$.ajax({
    url:"results.php",
    type:"POST",
    data: {
        answer_1: 'blue'    // what colour is the sky?
    },
    success:function(result){
        console.log(result);
        $('#results').html("<p>"+result+"</p>");
    }
});

次に、PHPがデータを収集する必要がありますが、すでにその設定が行われていると思います。

$answer1 = $_POST['answer1'];


更新: ユーザーコメントからのサンプル情報を含める。

<input type="radio" name="answer_1" value="a" id="question_1_answer_a"/> 
<label for="question_1_answer_a">anirudh</label> 
<input type="radio" name="answer_1" value="b" id="question_1_answer_b"/> 
<label for="question_1_answer_b">anirudh</label>

したがって、次のようなものが必要になります。

data: {
    answer_1: $('input[name="answer_1"]').val(),    // from HTML example
    answer_2: $('input[name="answer_2"]').val(),
    answer_3: $('input[name="answer_3"]').val()
    // etc
},

jQueryを使用してフォームデータを変更する予定がない場合は、いつでもシリアル化して投稿することができます:http: //api.jquery.com/serialize/

于 2013-01-13T07:58:13.557 に答える