2010-11-18 14 views
1

Ich habe php zu senden:ein Array serialisiert in Hyperlink dieses

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(); 
        }); 

Was mein nächster Schritt sein würde, dies zu PHP zu senden, ich möchte nicht Ajax verwenden, weil ich die PHP-Seite zu gehen und Sehen Sie sich die erhaltenen Ergebnisse an. Die Idee ist, Werte aus einer Tabelle zu nehmen, wenn der Benutzer auf "Preview" drückt, nimmt er diese Werte und bringt sie zu einer PHP-Seite, die ich eine Invoice-Style-Seite eingerichtet habe, die ich mit den obigen Werten füllen werde?

Dank

+0

Ich denke, Sie werden hier auf einige Probleme stoßen, für den Anfang Sie laufen eine schrecklich ineffiziente DOM-Traversal-Schleife, aber mehr, Sie werden die GET-Anfrage Längenbeschränkung in älteren Browsern blasen. –

+0

fair genug, wie könnte ich diese dann per POST senden? – benhowdle89

Antwort

1

Ich möchte nicht Ajax verwenden, weil ich müssen die PHP-Seite gehen und sehen Sie die bekommenen Ergebnisse

Die Logik muß nicht gegenwärtig zu klar hier- scheint es Sie JS scheint zum Abfragen Ihre DB basierend auf einigen Kriterien, ordnen Sie die Ergebnisse zu Arrays und dann die Ergebnisse auf eine PHP-Seite, um sie auszugeben?

Anstatt das Ergebnisset über GET/POST an die Seite zu senden, senden Sie NUR die Variablen, die Sie zum Erstellen Ihrer Ausgangskriterien verwenden, dann PHP auf der PHP-Vorschauseite, um die DB abzufragen, die Ergebnisse zu erhalten Zeig's ihnen.

Sie sollten immer versuchen, keine vollständige Ergebnismenge über GET/POST an eine andere Seite zu senden. Sie sollten nur Operatoren senden, die Ihnen helfen, die Ergebnismenge zu erhalten oder zu erstellen.

+0

Das macht Sinn. Ich habe zwei Knöpfe unter der "Bestellungstabelle", eine ist eine "Vorschau-Schaltfläche" und eine ist eine "Senden" -Schaltfläche. Also was ich tun könnte, ist, Leute dazu zu bringen, submit zu drücken, so fügt sie die Reihenfolge in eine db ein, dann haben Sie die "Vorschau" -Schaltfläche als regulären Hyperlink, der die "order_id" über GET sendet. Dann ziehe die Bestellung über die "order_id" aus der db zurück für den "preview" Teil ... danke! – benhowdle89

+0

Kein Problem, manchmal ist es einfach - besonders wenn man mitten in der Entwicklung ist - nicht immer einen effizienteren/praktischeren Ansatz zu erkennen, ich weiß, dass es mir passiert! – SW4

1

Über die Werte von POST zu senden: eine Zeichenfolge mit Trennzeichen bauen, die Werte, und legen Sie die Zeichenfolge in ein verstecktes Feld trennt. Ändern Sie das Formular-Tag, um method="post" zu verwenden. Wenn Sie das Formular senden, haben Sie eine PHP-Variable wie etwa: $_POST['hiddenFieldName'] mit der Zeichenfolge, die Sie erstellt haben. Jetzt müssen Sie die Zeichenfolge wie beim Erstellen trennen, um die Werte abzurufen.

Ein wichtiger Hinweis zur Sicherheit: Es scheint, wie dies eine Art des Einkaufens ist cart- ich dies durch die Tasten zu raten bin, die über den Preis andeuten. Wenn dies der Fall ist und Benutzer von dieser Website aus bestellen können, sind Sie anfällig für einige große Sicherheitsprobleme über Parameter Tampering. Um dies zu vermeiden, senden Sie einfach ein Array (oder String, wie ich es erklärt habe), mit IDs und Mengen der ausgewählten Elemente. Rufen Sie auf der Seite, auf der Sie die Artikel anzeigen, erneut die Preise aus der Datenbank ab und berechnen Sie die Summe neu. Alle Berechnungen sollten auf der Serverseite erfolgen.

Verwandte Themen