2010-11-18 7 views
4

Je ne peux pas obtenir le PHP + jQuery suivant pour travailler - tout ce que je veux que le script fasse est de passer la valeur par ajax, et obtenir le php pour saisir Vérifiez les correspondances et ajoutez 1 pour marquer.PHP + Jquery - passer la valeur par ajax à php et vérifier par rapport à la variable

C'est le code que j'ai écrit:

<?php 
$score = "1"; 

$userAnswer = $_POST['name']; 

if ($_POST['name'] == "145"){ 
    $score++; 
}else{ 
    //Do nothing 
} 

echo $score; 

?> 


<script type="text/javascript"> 

$(document).ready(function() { 

    $("#raaagh").click(function(){ 

    var value = "145"; 

    alert(value); 

    $.ajax({ 
     url: 'processing.php', //This is the current doc 
     type: "POST", 
     data: ({name: value}), 
     success: function(){ 
      location.reload(); 
     } 
    }); 


    }); 
}); 

</script> 

<p id="raaagh">Ajax Away</p> 

Merci pour l'aide, je l'ai changé GET à POST dans les deux cas, et pas de joie - il y a quelque chose d'autre mal.

+0

Et quelle est exactement la problème? –

+0

Les questions sans description des problèmes sont difficiles à répondre. "Ça ne marche pas" n'est pas une description assez bonne. –

Répondre

17

tout d'abord: Ne pas revenir aux temps anciens ... don n'utilisez pas le même script pour générer du HTML et répondre à une requête ajax. Je n'ai aucune idée de ce que vous essayez de faire ... Permettez-moi de changer votre code pour qu'il ait au moins un sens et documente ce qui se passe. Il semble que le problème réside dans le fait que vous appelez location.reload depuis votre gestionnaire de succès.

// ajax.php - Sorties 2 si le paramètre de nom est de 145, 1 autre (????)

<?php 
$score = "1";  
$userAnswer = $_POST['name'];  
if ($_POST['name'] == "145"){ 
    $score++; 
}  
echo $score;  
?> 

// test.html

<script type="text/javascript"> 
$(document).ready(function() {  
    $("#raaagh").click(function(){  
     $.ajax({ 
      url: 'ajax.php', //This is the current doc 
      type: "POST", 
      data: ({name: 145}), 
      success: function(data){ 
       // Why were you reloading the page? This is probably your bug 
       // location.reload(); 

       // Replace the content of the clicked paragraph 
       // with the result from the ajax call 
       $("#raaagh").html(data); 
      } 
     });   
    }); 
}); 

</script> 

<p id="raaagh">Ajax Away</p> 
+0

Vous venez de m'avoir sauvé un gros mal de tête - j'utilise toujours le truc de rechargement automatique, donc ce n'était pas le bug - mais tout ce qui a changé a été corrigé. JE VOUS REMERCIE! – Richard

+1

"Quoi d'autre a changé" est le fait que vous ne publiez pas la partie html de la page pour l'appel ajax maintenant. –

2

Vous utilisez POST dans votre jQuery, mais vous essayez d'obtenir un GET dans votre php. BTW c'est une bonne habitude de vérifier si une variable GET/POST est réglée avant de la lire. en utilisant la fonction isset().

0

Remplacez $_GET par $_POST et voilà. Fondamentalement POST et GET sont deux façons différentes de passer des variables à un script. La méthode get en php peut également être attachée à la fin d'une URL: script.php?variable=value et il est vraiment facile de pirater. Alors que la méthode post peut être soumise avec des formulaires ou des appels ajax et il est assez sûr, au moins plus que l'obtenir. Aussi, je vous suggère de vérifier quelle que soit une variable GET ou POST est définie avant de l'appeler, de sorte que vous pouvez éviter les erreurs de notification stupide.

Il suffit d'utiliser le code suivant:

if (isset($_POST['var']) and !empty($_POST['var'])) { // do something } 

Vous pouvez également supprimer le

}else{ 
// do nothing 
} 

partie du script, puisque la clause else est pas toujours nécessaire.

0

Vous soumettez les données avec un POST Ajax, mais essayez de le lire dans un GET. Soit utiliser type: "GET" dans votre appel Ajax ou $_POST['name'] dans votre PHP.

0

Le problème est que vous utilisez jQuery pour POSTER votre valeur, mais vous le lisez avec GET.

Vous devriez être en mesure de résoudre votre problème en changeant votre $ _GET [ « nom »] à $ _POST [ « nom »]

Questions connexes