l2phile Δημοσιεύτηκε Οκτώβριος 31, 2010 #1 Δημοσιεύτηκε Οκτώβριος 31, 2010 Παίδες την βοήθεια σας. Φτιάχνω μία ιστοσελίδα που θα γίνεται reviewing άρθρων. Θέλω λοιπόν σε μία σελίδα να αντιστοιχίζω τα άρθρα και τους reviewers που μπορούν να τα κρίνουν βάση της υποκατηγορίας τους.(text)article_name - (list)Reviewer1 - (list)Reviewer2 - (list)Reviewer3........(text)article_name - (list)Reviewer1 - (list)Reviewer2 - (list)Reviewer3Τους κριτές τους περνάω με <select> και <option value>. Αλλά το article_id πως; Ειναι γνωστό, δεν το βάζω εκείνη την στιγμή.
Jaco Οκτώβριος 31, 2010 #2 Οκτώβριος 31, 2010 τι εννοεις ακριβως..? αφου ξερεις την τιμη της παραμετρου θα την επιστρεψεις σαν php argument με ενα απλο http post η με ajax request και θα το επεξεργαστεις μετα απο την πλευρα του server με php...
l2phile Οκτώβριος 31, 2010 Author #3 Οκτώβριος 31, 2010 Κάπως έτσι;echo "<tr><td>{$line['subject']}</td>"; (Θέλω να δείχνει το θέμα)echo "<input id=\"articleID\" type=\"hidden\" value=\"{$line['article_id']}\"></td>";και var artID = document.getElementById('articleID').value;var queryString = "?artID=" + articleID; ajaxRequest.open("GET", "revart.php" + queryString, true); ajaxRequest.send(null);
Jaco Νοέμβριος 1, 2010 #4 Νοέμβριος 1, 2010 Λοιπόν στην javascript χρειάζεσαι το εξήςfunction getHTTPObject(){ //δημιουργεί ένα Άζαξ object για τα τζάμια if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); else if (window.XMLHttpRequest) return new XMLHttpRequest(); else { alert("Your browser does not support AJAX."); return null; }}function GetResponse(){ //απλά κάνει trap το event βλέπει τι είναι και καλεί μια callback function if(httpObject.readyState == 4){ server_response = httpObject.responseText; HandleIncomingData(server_response); //callback }}function AbortHttpObj() { httpObject.abort(); httpObject = null;}function HandleIncomingData(data) { //callback function //Ο κώδικάς σου εδώ, όπου χειρίζεσαι τα data, τα οποία έχουν έρθει από τον server // // // AbortHttpObj();}function SendReqToServer(req) { //Με αυτό κάνεις azax requests httpObject = getHTTPObject(); if ( httpObject != null ) { var data = document.getElementById('httpData'); /* παίρνεις κάποιο string από ένα object της φόρμας σου που λέγεται httpData */ httpObject.open("GET", "answermeplease.php?data=" + data, true);`//κάνεις ένα http GET }}και στην php σε ένα αρχείο στο server που λέγεται answermeplease.php και βρίσκεται στο ίδιο web directory με το html/php το οποίο έχει φορτώσει το απο πάνω javascript<?phpif (isset($_GET["data"])) { $data = $_GET["data"];}else { echo "FAIL!"; exit(0);}$response = "";if ($data === "ta dedomena pou perimeneis na breis") { //Κάνεις ότι θες με τα δεδομένα // // $response = "ότι θες να στείλεις πίσω σαν απάντηση";}else { //Χειρίζεσαι τα λάθη σου // // $response = "ότι θες να στείλεις πίσω σαν σφάλμα";}echo $response;clearstatcache(); //αυτό να το καλείς πάντα και ας μην χρειάζεται?>Αυτά... αν θες να δεις περισσότερα θα σου πρότεινα να έριχνες μια ματιά στον κώδικα του web interface για το myrapbook, στο οποίο τα χρησιμοποιώ συνέχεια μαζί με sockets κτλ...
l2phile Νοέμβριος 1, 2010 Author #5 Νοέμβριος 1, 2010 Δηλαδή στο παράδειγμα μου αν στείλω τις 4 μεταβλητές (articleID + 3reviewers) που θέλω στο answermeplease.php, μπορώ μετά από εκεί να τις καταχωρήσω στη βάση, χωρίς να αλλάξει η αρχική σελίδα; Το θελω αυτό για να περνάω όποιο άρθρο θέλω με την σειρά που θέλω και να μην με πετάει σε άλλη σελίδα για καταχώρηση. Για την ώρα το έκανα με post, αλλά δεν είναι το ιδανικό. Επίσης θέλω να βρω πως να δείχνει στα <option value> των reviewers τις παλιές επιλογές που έχουν γίνει. Η σελίδα είναι κάπως έτσι:
Jaco Νοέμβριος 1, 2010 #6 Νοέμβριος 1, 2010 Δηλαδή στο παράδειγμα μου αν στείλω τις 4 μεταβλητές (articleID + 3reviewers) που θέλω στο answermeplease.php, μπορώ μετά από εκεί να τις καταχωρήσω στη βάση, χωρίς να αλλάξει η αρχική σελίδα; Το θελω αυτό για να περνάω όποιο άρθρο θέλω με την σειρά που θέλω και να μην με πετάει σε άλλη σελίδα για καταχώρηση.Αυτό κάνει το azax, δουλεύει στο background και δεν σου αλλάζει η αρχική σελίδα... επίσης μέσα από το answermeplease.php και με την προυπόθεση ότι έχεις εγκατεστημένο το module της mysql για php, θα κάνεις όλα τα queries που θες για να σώζεις ή να τραβάς δεδομένα...Επίσης θέλω να βρω πως να δείχνει στα <option value> των reviewers τις παλιές επιλογές που έχουν γίνει.Μέσα στο callback θα κάνεις buffer την λίστα σου (αν δεν θες να είναι στο global scope του κώδικά σου) και θα την ξαναδημιουργείς με τα νέα δεδομένα...
JaguarOne Νοέμβριος 1, 2010 #7 Νοέμβριος 1, 2010 μια σημείωση μόνοαν για τις ίδιες παραμέτρους που θα περνάς μεσα από το ajax (πχ responder.php?foo=bar) παίρνεις διαφορετικά αποτελέσματα (γιατί κάτι άλλαξε στην βάση πχ)τότε μην κάνεις GET αλλά κάνε POST, ειδικά αν θέλεις να δουλεύει σωστά η εφαρμογή σου σε ΙΕ.
l2phile Νοέμβριος 3, 2010 Author #8 Νοέμβριος 3, 2010 Στη φόρμα βάζω event -> onsubmit="SendReqToServer();" σωστά; Και ο κώδικας είναι κάπως έτσι: function SendReqToServer(req) { //Με αυτό κάνεις azax requests httpObject = getHTTPObject(); if ( httpObject != null ) { var artID = document.getElementById('articleID'); var reviewer1 = document.getElementById('rev1'); var reviewer2 = document.getElementById('rev2'); var reviewer3 = document.getElementById('rev3'); httpObject.open("GET", "revart1.php?artiID=" + artID + "reviewer1=" + reviewer1 + "reviewer2=" + reviewer2 + "reviewer3=" + reviewer3, true);` } Δεν δουλεύει. Με το submit πάντως εμφανίζονται κανονικά στην μπάρα τα δεδομένα αλλά με το script δεν γίνεται τίποτα. Γενικά πάντως θα χρειαστεί να βάλω POST γιατί δεν λέει και πολύ να φαίνονται τα δεδομένα.
Jaco Νοέμβριος 3, 2010 #9 Νοέμβριος 3, 2010 httpObject.open("GET", "revart1.php?artiID=" + artID + "&reviewer1=" + reviewer1 + "&reviewer2=" + reviewer2 + "&reviewer3=" + reviewer3, true);` Αν έχεις πρόβλημα με την cache είτε του server είτε του browser, τότε πρέπει να προσθέσεις στο τέλος σαν php argument και έναν random αριθμό ή κάποιο timestamp, το οποίο μπορείς να το αγνοείς από την πλευρά του server ή να το κρατάς σαν reference ή να το χρησιμοποιείς για ασφάλεια και anti-spam...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.