2010-07-02 3 views
0

Je poste des valeurs de formulaire via ajax à un script PHP. Le PHP renvoie 1 si c'est réussi et 2 sinon. Le PHP semble fonctionner correctement mais je suis redirigé vers l'URL dans le javascript et montré le numéro 1 sur une page blanche au lieu d'être renvoyé à la requête ajax.JQuery Ajax erreur

Ceci est mon javascript, quelqu'un peut-il voir où je vais mal?

$(".save").click(function() { 
var area = $("input#area").val(); 
var january = $("input#january").val(); 
var target = $("input#target").val(); 
var ach = $("input#achieved").val(); 
var comments = $("input#comments").val(); 
var token = "<?php echo $token; ?>"; 
var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token; 
    $.ajax({ 
    type: "POST", 
    url: "review/update-review/<?php echo $yr; ?>", 
    data: dataString, 
    success: function(msg) { 

     if(msg == 1) 
     { 
      alert("Your review has been updated."); 
     } 
     else 
     { 
      alert("There was a problem updating your review. Please try again."); 
     } 

    } 
    }); 
    return false; }); 

Répondre

0

Je pense que le problème peut être dû au format de vos paramètres de données. pour

Type: "POST"

puis pour

données: "{param1: 'param1', param2: 'param2'}"

avez-vous un outil comme Fiddler pour afficher les communications entre votre navigateur et votre serveur. sinon je recommanderais le téléchargement de fiddler (c'est gratuit). il vous donnera beaucoup de perspicacité quant à ce qui se passe réellement dans les coulisses et peut donner des informations inestimables sur ce qui pourrait avoir mal tourné avec un poste de style ajax.

+0

le seul autre commentaire ici qui résout la situation. – RobertPitt

+0

Merci pour les réponses tout le monde. J'ai utilisé le plugin Tamper Data pour firefox et j'ai vu que je passais par erreur d'autres valeurs de champs de formulaire avec la requête ajax. Tous triés maintenant et semble fonctionner comme prévu. Merci pour votre aide tout le monde. – Tom

0

Le code me semble assez bien, y compris la syntaxe. Encore quelques possibilités se présentent, qui sont: -

  • L'URL pour exécuter le code PHP, que vous utilisez dans l'exemple (« review/update-review/<?php echo $yr; ?> »), peut-être mal en référence à votre page en cours. Les variables que vous utilisez ici pour capturer les valeurs des éléments INPUT peuvent produire des caractères spéciaux supplémentaires (comme "&"), ce qui peut conduire à un traitement erroné, entraînant le problème JavaScript.

Espérons que ça aide.

+0

Merci pour les suggestions. J'ai vécu et vérifié tout. Toutes les données sont correctement enregistrées dans la base de données, tout semble fonctionner, sauf que l'ajax ne reçoit pas la réponse, je suis redirigé vers l'URL. – Tom

+0

Pouvez-vous préciser la ligne "Je suis redirigé vers l'URL", car je n'ai pas compris ce que vous voulez dire? De quelle URL, vous êtes redirigé et comment avez-vous vérifié que les résultats sont insérés dans la base de données? ** Cochez également un autre point, si l'une des données entrées par l'utilisateur contient un caractère spécial (dans ce cas un "&"), la variable JS "dataString" ne fonctionnera pas correctement. ** Veuillez vérifier ces points. Merci –

0

Pour les démarreurs if(msg == 1) ne sera pas == 1 parce que ce que votre récupération est une chaîne de sorte qu'il serait b if(msg == '1').

Où vous avez

var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token; 

Un changement qui à un objet comme ceci:

var dataObject = { 
    area : area, 
    january : january, 
    target : target, 
    achieved : ach, 
    comments : comments, 
    ci_token : token 
} 

puis changer à la demande ajax à dataObject

Debug

  • Firefox: Firbug. Si vous utilisez le chrome, tapez Ctrl+Shift+J pour ouvrir la console javascript et déboguer. regarder pour tous les heaDers et les données de votre envoi et vous pouvez utiliser console.log(varaible) pour suivre les valeurs d'une variable.
+0

Merci pour la suggestion à propos de la chaîne qui est repassée - j'ai aussi changé ça. – Tom