2010-12-06 19 views
0

J'ai un formulaire qui utilise ajax pour soumettre des données à une base de données mysql, puis envoie le formulaire à PayPal. Toutefois, après avoir envoyé, si je clique sur le bouton Précédent de mon navigateur, modifiez certains champs, puis soumettez à nouveau le formulaire, les données mysql ne sont pas mises à jour et aucune nouvelle entrée n'est créée.jQuery ajax appel ne mettra pas à jour mysql après avoir appuyé sur le bouton précédent

Voici mon Jquery:

$j(".submit").click(function() { 
     var hasError = false; 
     var order_id = $j('input[name="custom"]').val(); 
     var order_amount = $j('input[name="amount"]').val(); 
     var service_type = $j('input[name="item_name"]').val(); 
     var order_to = $j('input[name="to"]').val(); 
     var order_from = $j('input[name="from"]').val(); 
     var order_message = $j('textarea#message').val(); 
     if(hasError == false) { 
      var dataString = 'order_id='+ order_id + '&order_amount=' + order_amount + '&service_type=' + service_type + '&order_to=' + order_to + '&order_from=' + order_from + '&order_message=' + order_message; 
      $j.ajax({ type: "GET", cache: false, url: "/gc_process.php", data: dataString, success: function() { } }); 

     } else { 

      return false; 

     } 
    }); 

Voici ce que mon script PHP ressemble:

<?php 

// Make a MySQL Connection 
include('dbconnect.php'); 

// Get data 
$order_id = $_GET['order_id']; 
$amount = $_GET['order_amount']; 
$type = $_GET['service_type']; 
$to = $_GET['order_to']; 
$from = $_GET['order_from']; 
$message = $_GET['order_message']; 

// Insert a row of information into the table 
mysql_query("REPLACE INTO gift_certificates (order_id, order_type, amount, order_to, order_from, order_message) VALUES('$order_id', '$type', '$amount', '$to', '$from', '$message')"); 

mysql_close(); 

?> 

Toutes les idées?

+0

Hey mate, pouvez-vous voir les appels en utilisant Firebug Console? –

+0

Est-ce le script PHP réel? Entendu de l'injection SQL? – Hamish

Répondre

0

Il s'avère que le problème est dû au fait que j'utilise iframes. J'ai été en mesure de résoudre le problème en faisant la page sans iframes. Merci à tous pour votre aide!

0

Vous devriez vraiment utiliser POST au lieu de GET, mais peu importe, je vérifier les points suivants:

  1. Ce jQuery exécute l'appel ajax après avoir cliqué sur le dos et modifier les informations, vous devriez probablement mettre soit un console.log ou un appel d'alerte pour voir si javascript échoue
  2. Ajoutez des échos dans le PHP et quelques sorties et allez ligne par ligne et voyez jusqu'où ça va. Depuis que vous l'avez obtenu, vous pouvez simplement charger un autre onglet dans votre navigateur et modifier les informations dont vous avez besoin.
  3. si j $ dans votre jQuery est la forme que vous devriez pouvoir tout faire $ j.serialize(), il est une fonction pratique pour obtenir toutes les données de formulaire dans une chaîne
0

Mate,

Avez-vous joint votre jquery dans

$j(function(){ 


}); 

Pour vous assurer qu'il est exécutée que si le Royaume est prêt?

En outre, je suppose que vous avez manuellement supprimé et renommé jquery de "$" en "$ j" pour éviter les conflits d'espace de noms. Si ce n'est pas le cas, il devrait être $ (fonction et non j $ (fonction

Quoi qu'il en soit en dehors de cela, voici quelques conseils pour votre code:

Étape 1: renommer tous les champs « nom » être le nom que vous voulez qu'ils soient dans votre objet "datastring" Par exemple Renseigner les [name = de] pour avoir le nom "order_from"

Étape 2:.. Utilisez ce code $ j (function () { $ j (". Submit"). Click (function() { var hasErreur = false; if (hasError == false) { var dataString = $ j ('f orm '). serialize();

  $j.ajax({ type: "GET", cache: false, url: "/gc_process.php?uu="+Math.random(), data: dataString, success: function() { } }); 

     } else { 

      return false; 

     } 
    }); 

}); Vous remarquerez que j'ai slappé une variable aléatoire "uu = random" sur l'url, ceci est généralement une fonction intégrée à jquery, mais pour s'assurer qu'il ne cache pas la réponse, vous pouvez la forcer en utilisant cette méthode.

bonne chance. Si cela ne fonctionne pas, essayez le script sans renommer jquery sur une nouvelle page.Voir si cela fonctionne, vous pourriez avoir des collisions entre cela et d'autres scripts sur la page

+0

Ça marchera si je mets onSubmit = 'return false;' sur l'élément de formulaire, mais il semble que si le formulaire est soumis, il ne fonctionnera pas à nouveau ... – HWD

+0

J'ai essayé de changer la cible du formulaire à une nouvelle fenêtre et cela a semblé fonctionner aussi bien. Cependant, j'ai besoin que cela se produise dans la même fenêtre. – HWD

+0

On dirait que cela pourrait être un problème d'iframe. Ce script est contenu dans un iframe ... – HWD