2016-04-06 18 views
1

değerini kontrol eden AJAX kullanarak bir gönder düğmesi yapılandırılıyor AJAX'ı ayrı bir PHP dosyasından artırılmış bir değer görüntülemek için düzgün şekilde kullanmaya çalışıyorum ancak kodda biraz hantal oluyorum. Göründüğü gibi şudur:Bir artırılmış değişken

$("#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'); 
     } 
     } 
     }); 
    }); 

değeri info.php saklanır ve ben o dosyadan bu değeri çekmeye çalışıyorum ancak AJAX sözdizimi kod nasıl emin değilim. Bu data: {$_SESSION['totalCorrect'} kodunun doğruluğundan emin değilim.

Artımlı değeri görüntüleyebilirim, bu yüzden en azından değişkenin artırıldığını biliyorum, ancak şimdi yapmak istediklerim, bu değişkeni geçip geçmediklerini kontrol etmek için kullanmaktır. Yaptılarsa, success.php adresine yönlendirilirler. Değilse, retake.php adresine gönderilir.

DÜZENLEME: Tüm kod yayınlanmıştır değil 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

Eğer karıştırma ediyoruz php ve (başarılı-geri aramasında) js kodu. Js-işlevlerinde '$ _SESSION'' a erişemezsiniz – Jeff

+0

Erişmek için kullanabileceğim bir değişkene '$ _SESSION ['totalCorrect']' kaydedebilir miyim? – Wolfrum

+0

, info.php'nin ana bölümlerini gösterebilir misiniz? – Jeff

cevap

1

, bu yüzden sadece bir soru cevap verebilir. İlk

:
Sen php ve javascript karıştırma ediyoruz. Javascript'te php değişkenlerine, çıkış html'sine dize olarak atamadıkça veya ajax yoluyla göndermediğiniz sürece erişemezsiniz - bunu yapmak istediğiniz şey budur.

Öyleyse şimdi de jQuery ajax bir göz atalım:

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

şimdi ayarlamak almanıza olanak 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"]; 

Ben şeklinizi tüm sayfalar, neye benzediğini bilmiyorum ayarlanmış, bu yüzden tam bir kod sağlayamıyorum - bu da sorunun çok ötesine geçecekti.
Ancak bu, ajax çalışmaları aracılığıyla php'den nasıl değişimin nasıl yapıldığına dair bir fikir vermelidir.

Daha Bilgisi: json hakkında Getting form data using JavaScript and sending data with Ajax

yararlı şeyler:
http://www.w3schools.com/js/js_json.asp
http://php.net/manual/en/function.json-encode.php

+0

Evet, her şeyi birkaç sayfa olduklarından beri gönderemedim ve bana bu sorunu vereni göstermek istedim. PHP değişkenlerinin AJAX ile nasıl çalıştığı konusunda emin değildim, bu yüzden kesinlikle bu linklere göz atıyorum. Cevap da bazı şeyleri açıklığa kavuşturdu, teşekkürler! – Wolfrum

+0

Rica ederim! Eğer yardımcı olduysa ve sorunuzu cevapladığımı düşündüğünüzde bunu kabul etmek isteyebilirsiniz. – Jeff

İlgili konular