2016-04-06 5 views
1

Ich versuche, AJAX korrekt zu verwenden, um einen erhöhten Wert aus einer separaten PHP-Datei anzuzeigen, aber ich bin ein wenig unschlüssig im Code. Dies ist, wie es aussieht:Konfigurieren einer Übermittlungsschaltfläche mit AJAX, die nach dem Wert einer inkrementierten Variablen sucht

$("#submit").click(function() 
    { 
     $.ajax({ 
     type: 'POST', 
     url: 'info.php', 
     dataType: 'json', 
     data: {$_SESSION['totalCorrect'} 
     success: function() 
     { 
     if ($_SESSION['totalCorrect'] >= 8 && $_SESSION['totalCorrect'] <= 10) 
     { 
      window.location.replace('success.php'); 
     } 
     else 
     { 
      window.location.replace('retake.php'); 
     } 
     } 
     }); 
    }); 

Der Wert in info.php gespeichert ist, und ich versuche, diesen Wert aus dieser Datei zu ziehen, aber ich bin mir nicht sicher, wie die AJAX-Syntax codieren. Ich bin mir sicher, dass dieser data: {$_SESSION['totalCorrect'} Code nicht korrekt ist.

Ich kann den inkrementierten Wert anzeigen, so dass ich zumindest weiß, dass die Variable inkrementiert wird, aber was ich jetzt tun möchte, ist diese Variable zu verwenden, um zu überprüfen, ob sie bestanden haben oder nicht. Wenn dies der Fall ist, werden sie auf success.php umgeleitet. Wenn nicht, werden sie an retake.php gesendet.

EDIT: info.php

if (empty($_SESSION["totalCorrect"])) 
{ 
    $_SESSION["totalCorrect"] = 0; 
} 
else 
{ 
    $totalCorrect = $_SESSION["totalCorrect"]; 
} 

foreach ($correctAns as $key => $answer) 
{ 
    if (!empty($_POST[$key])) 
    { 
     if ($_POST[$key] == $answer) 
     { 
      echo $correct[$index]; 
      $_SESSION["totalCorrect"]++;  
     } 
     else if($_POST[$key] != $answer) 
     { 
      echo $incorrect[$index]; 
     } 
     $_SESSION[$key] = true; 
    } 
    $index++; 
}; 
+0

Sie mischen PHP und JS-Code (in erfolg Rückruf). Sie können auf '$ _SESSION' in js-functions nicht zugreifen – Jeff

+0

Kann ich '$ _SESSION [' totalKorrektur ']' in einer Variablen speichern, auf die ich zugreifen kann? – Wolfrum

+0

können Sie die Hauptteile von 'info.php' anzeigen? – Jeff

Antwort

1

Sie nicht den gesamten Code geschrieben haben, so kann ich nur die eine Frage beantworten.

Zuerst:
Sie mischen PHP und Javascript. Sie können nicht auf PHP-Variablen in Javascript zugreifen, es sei denn, Sie weisen sie als Ausgabe dem HTML-Code zu oder posten sie über einen Ajax - das ist es, was Sie tun möchten.

Also lassen Sie uns bei Ihrer jQuery-Ajax einen Blick:

$("#submit").click(function() { 
    $.ajax({ 
    type: 'POST', 
    url: 'info.php', 
    // dataType: 'json', // I deactivated this to recieve a string only 

    // in data you should get the answers the user gave - another topic 
    data: {question1: '42', question2: 'Douglas'}, // that ',' was missing 

    // you'll get whatever you echo in info.php as 'result' as parameter 
    // in this success-callback-function (as result [json]): 
    success: function(result) { 
     // now you can check what the result is: 
     console.log(result); // make it visible to you for debugging 
     if (parseInt(result) >= 8 && parseInt(result) <= 10) { 
      console.log('redirecting to SUCCESS'); 
      //window.location.replace('success.php'); // uncomment when working 
     } 
     else { 
      console.log('redirecting to RETAKE'); 
      //window.location.replace('retake.php'); // uncomment when working 
     } 
    } 
    }); 
}); 

können jetzt Ihre anpassen info.php:

if (empty($_SESSION["totalCorrect"])) 
{ 
    $_SESSION["totalCorrect"] = 0; 
} 
else 
{ 
    $totalCorrect = $_SESSION["totalCorrect"]; 
} 

foreach ($correctAns as $key => $answer) 
{ 
    // remember, that in $_POST you'll get everything you've put in 'data' before! 
    if (!empty($_POST[$key])) 
    { 
     if ($_POST[$key] == $answer) // better change to === if you know what data-types you'll get (and google the difference) 
     { 
      //echo $correct[$index]; // do not echo anything else but the result 
      $_SESSION["totalCorrect"]++;  
     } 
     else if($_POST[$key] != $answer) 
     { 
      //echo $incorrect[$index]; 
     } 
    $_SESSION[$key] = true; 
    } 
    // $index++; // we don't need that, do we?? 
}; 

// here's the actual response/result: 
// All you echo will be in 'result' of your ajax succes-callback-function 

echo $_SESSION["totalCorrect"]; 

Ich weiß nicht, was Ihre Form aussieht, wie alle Seiten sind eingerichtet, damit ich keinen vollständigen Code bereitstellen kann - auch das würde weit über die Frage hinausgehen.
Aber das sollte Ihnen eine Vorstellung davon geben, wie das Erhalten von Variablen von PHP über Ajax funktioniert.

Weitere Infos: Getting form data using JavaScript and sending data with Ajax

Nützliches über json:
http://www.w3schools.com/js/js_json.asp
http://php.net/manual/en/function.json-encode.php

+0

Ja, ich konnte nicht alles posten, da sie mehrere Seiten haben und ich wollte denjenigen zeigen, der mir das Problem gab. Ich denke, dass ich nicht wusste, wie PHP-Variablen mit AJAX funktionieren, also schaue ich mir diese Links an. Sie beantworten auch einige Dinge, also danke! – Wolfrum

+0

Gern geschehen! Wenn es geholfen hat und du glaubst, ich hätte deine Frage beantwortet, möchtest du es vielleicht akzeptieren. – Jeff

Verwandte Themen