简体   繁体   中英

How can i access a dynamically changing variable in php page to other html page using jquery ajax method?

This is php page which echoes variable $correct . Its initial value is 0 . It is changing with increment in its value but when i load this value after echoing it to other page using jquery ajax method it returns only 0 not the increment value.

<?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";
?>

This is script on other page which access this variable $correct but it always result in 0 ,though the variable value is changing on the php page? How can i correct this?

<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>               

You're not passing any answers from AJAX to PHP.
Therefore none of your conditions in the PHP are met.
Thus it returns 0.

To pass data with the post request consult the ajax documentation (http://api.jquery.com/jQuery.ajax/). You'll want to look at the data attribute.

You'll want to have something like this:

$.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>");
    }
});

Then your PHP needs to collect the data but I imagine you already have that setup:

$answer1 = $_POST['answer1'];


Update: to include example information from user comment.

 <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> 

So you'd want something like this:

 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 }, 

If you're not planning on modifying any of the form data with jQuery you could always just serialize it and post that instead: http://api.jquery.com/serialize/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM