2010-03-01 2 views
1

Je suis en train d'écrire un site d'hébergement.J'utilise PayPal comme système de facturation. Avant de rediriger le client vers la page PayPal, j'ai besoin d'insérer toutes les données pertinentes dans la base MySql.javaScript fire php file et n'attendez pas réponse

Ma question est: comment puis-je tire le php (du javaScript) sans attendre de rejouer une manière (et que le fait que la page qui déclenche le php n'existera plus fera aucun problème)

+1

Vous devez regarder dans AJAX et probablement un framework javascript comme jQuery. –

Répondre

0

Utilisez AJAX. Envoyez un XMLHttpRequest au script php approprié avec les données pertinentes et redirigez le client après avoir reçu une réponse positive du script.

+0

Oui, j'ai finalement utilisé cette option. Je ne voulais pas faire glisser toutes les données à travers les pages ... Pour ceux qui n'ont pas encore JavaScript .. bien .. la moitié de mon site ne fonctionnera pas correctement .. – ori

3

Si vous devez insérer des données dans la base de données et rediriger vers une page Paypal, vous n'avez vraiment qu'un choix: envoyer le formulaire au serveur, écrire les données dans la base de données et renvoyer une redirection au client. Alors:

<?php 
// save data to database 
header('Location: http://www.paypal.com'); 
exit; 
+0

J'aurais aimé y penser! –

2

Si elle a être JavaScript, je ferais cette opération AJAX normale (Voir ici pour JQuery based Ajax.)

Je trouve dangereux, même si, pour commencer une demande et non attendez la réponse. Que se passe-t-il si le réseau de l'utilisateur est encombré et que la demande doit attendre à la fin du client, et ne le fait jamais avant que l'utilisateur ne passe à la page suivante? Mieux vaut attendre l'événement success. L'utilisation de JavaScript a pour inconvénient majeur que si JavaScript est désactivé ou qu'une erreur JavaScript se produit, les données vitales ne seront pas écrites dans votre base de données, alors que la procédure d'achat pourrait continuer comme prévu. Vérifiez si c'est vraiment ce que vous voulez. L'approche basée sur header par Cletus est certainement la plus sûre.