2010-11-18 7 views
1

J'ai ceci:sérialiser un tableau pour envoyer php lien hypertexte

var postData = {}; 
        $('#items tr').not(':first').each(function(index, value) { 
         var keyPrefix = 'data[' + index + ']'; 
         postData[keyPrefix + '[index]'] = index; 
         postData[keyPrefix + '[supp_short_code]'] = $(this).closest('tr').find('.supp_short_code').text(); 
         postData[keyPrefix + '[project_ref]'] = $(this).closest('tr').find('.project_ref').text(); 
         postData[keyPrefix + '[om_part_no]'] = $(this).closest('tr').find('.om_part_no').text(); 
         postData[keyPrefix + '[description]'] = $(this).closest('tr').find('.description').text(); 
         postData[keyPrefix + '[quantity_input]'] = $(this).closest('tr').find('.quantity_input').val(); 
         postData[keyPrefix + '[cost_of_items]'] = $(this).closest('tr').find('.cost_of_items').text(); 
         postData[keyPrefix + '[cost_total_td]'] = $(this).closest('tr').find('.cost_total_td').text(); 
        }); 

Quelle serait ma prochaine étape pour envoyer à PHP, je ne veux pas utiliser Ajax parce que je dois aller à la page PHP et voir les résultats reçus. L'idée est de prendre des valeurs à partir d'une table, lorsque l'utilisateur appuie sur "Aperçu", il va prendre ces valeurs et les amener à une page PHP que j'aurai mis en place une page de style Facture que je vais remplir avec les valeurs ci-dessus?

Merci

+0

Je pense que vous allez rencontrer plusieurs problèmes ici, pour commencer, vous utilisez une boucle de traversée DOM terriblement inefficace, mais plus encore, vous allez souffler la limite de longueur de requête GET dans les anciens navigateurs. –

+0

assez juste, comment pourrais-je envoyer ces via POST alors? – benhowdle89

Répondre

1

je ne veux pas utiliser Ajax parce que je dois aller la page PHP et afficher les reçu les résultats

La logique ne marche pas semble ici- trop clair à l'heure actuelle, il semble que vous utilisez JS pour interroger votre base de données basée sur certains critères, affecter les résultats aux tableaux puis pousser les résultats à une page PHP pour les sortir? Au lieu d'envoyer le resultset via GET/POST à ​​la page, pourquoi n'envoyez-vous QUE les variables que vous utilisez pour construire vos critères initiaux, puis sur la page d'aperçu PHP, utilisez PHP pour interroger la BD, obtenir les résultats et montre leur.

Vous devriez toujours essayer de ne pas envoyer un ensemble de résultats complet via GET/POST à ​​une autre page, vous devriez viser à envoyer uniquement des opérateurs qui vous aident à obtenir ou créer le resultset.

+0

Cela a du sens. J'ai deux boutons en dessous de la "table de commande" l'un est un "bouton de prévisualisation" et l'un est un bouton "soumettre". Donc, ce que je peux faire est d'amener les gens à appuyer sur submit afin qu'il insère la commande dans un db, puis avoir le bouton "preview" comme hyperlien régulier en envoyant le "order_id" via GET. Puis reculer la commande via le "order_id" de la db pour la partie "preview" ... merci! – benhowdle89

+0

Pas de problème, parfois c'est facile - surtout en plein développement - de ne pas toujours reconnaître une approche plus efficace/pratique, je sais que ça m'arrive! – SW4

1

A propos de l'envoi des valeurs par POST: construire une chaîne avec un séparateur qui sépare les valeurs, et insérer la chaîne dans un champ caché. Modifiez la balise de formulaire pour utiliser method="post". Lorsque vous envoyez le formulaire, vous aurez une variable php quelque chose comme: $_POST['hiddenFieldName'] avec la chaîne que vous avez construit. Maintenant, vous devrez séparer la chaîne comme vous l'avez construit pour récupérer les valeurs.

Une note importante sur la sécurité: Il semble que cela est une sorte de shopping Cart- Je devine que cela par les clés qui font allusion au sujet du prix. Si tel est le cas, et les utilisateurs peuvent commander à partir de ce site, vous êtes sujet à de gros problèmes de sécurité via Parameter Tampering. Pour éviter cela, il suffit d'envoyer un tableau (ou une chaîne, comme je l'ai expliqué), avec les identifiants et les quantités des éléments choisis. Sur la page où vous affichez les articles, récupérez de nouveau les prix à partir de la base de données et recalculez le total. Tous les calculs doivent être effectués côté serveur.