joy1 Δημοσ. 6 Δεκεμβρίου 2010 Δημοσ. 6 Δεκεμβρίου 2010 Έχω ένα πρόβλημα με το jquery.js. Θέλω να φτιάξω ένα site όπου όταν πληκτρολογείς τον αριθμό μητρώου σου να σου το εμφανίζει σε λίστα Όλα είναι ΟΚ αλλά αν πληκτρολογίσω στο πεδίο τον κωδικό γρήγορα, π.χ. 2250 τότε το πρόγραμμα ψάχνει ανάποδα δηλ. πρώτα μου εμφανίζει το όνομα με τον κωδικό 2250 και στη συνέχεια μου εμφανίζει τα ονόματα που ξεκινούν με κωδικό 2200 και στη συνέχεια με 2. Είναι δηλαδή σα να ψαχνει ανάποδα. Αν όμως πληκτρολογήσω των κωδικό αργά, τότε μου εμφανίζει το σωστό αποτέλεσμα. Μπορεί να με βοηθήσει κάποιος γιατί δεν ξέρω τι να κάνω (είμαι και καινούργια στην php)!!!! Σας επισυνάπτω τον κώδικά μου function BookAutosuggestID() { $id = $_POST['id']; if(strlen($id) >0) { $employee = $this->BookModel->AutosuggestEmployeeID($id); $AutosuggestDataView['employee'] = $employee; $this->load->view('Book/BookAutosuggestID', $AutosuggestDataView); } else { // do nothing } } //End of BookAutoSuggestID επικοινωνία με βάση function AutosuggestEmployeeID($employeeID) $sql = "SELECT EMP.ID, EMP.FIRST_NAME, EMP.LAST_NAME, GET_EMP_EMAIL(ID) EMP_EMAIL "; $sql .= "FROM TS_ADMIN.TS_EMPLOYEES EMP " ; $sql .= "WHERE EMP.ID = '".$employeeID."' "; $sql .= "ORDER BY EMP.ID "; $query = $this->db->query($sql, array()); return $query->result_array(); } // End of AutosuggestEmployeeID javascript function suggest(inputString){ if(inputString.length == '') { $('#suggestions').fadeOut(); } else { $('#employee').addClass('load'); $.post("http://172.11.100.110:81/ci/index.php/BookAutosuggestID.php", {queryString: ""+inputString+""}, function(data){ if(data.length >0) { $('#suggestions').fadeIn(); $('#suggestionsList').html(data); $('#country').removeClass('load'); } }); } } function fill(thisValue) { $('#employee').val(thisValue); setTimeout("$('#suggestions').fadeOut();", 600); } BookAutosuggestID.php <?php echo '<ul>'; ?> <?php foreach ($employee as $employeeRow) { ?> <?php //while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { ?> <?php echo '<li onClick="fill(\''.addslashes($employeeRow['ID']).'\'); firstnamefill(\''.addslashes($employeeRow['FIRST_NAME']).'\'); lastnamefill(\''.addslashes($employeeRow['LAST_NAME']).'\'); emailfill(\''.addslashes($employeeRow['EMP_EMAIL']).'\');">'.$employeeRow['ID'].' : '.$employeeRow['FIRST_NAME']." ".$employeeRow['LAST_NAME'].' : '.$employeeRow['EMP_EMAIL']. '</li>'; ?> <?php //echo '<li onClick="fill(\''.addslashes(iconv("ISO-8859-7", "UTF-8//TRANSLIT", $row['TNAMA'])).'\');">'.iconv("ISO-8859-7", "UTF-8//TRANSLIT", $row['TORNO']).'</li>'; ?> <?php } ?> <?php echo '</ul>'; ?>
Επισκέπτης Δημοσ. 6 Δεκεμβρίου 2010 Δημοσ. 6 Δεκεμβρίου 2010 Το πρόβλημα δεν είναι στην php, αλλά στο γεγονός ότι το ajax request είναι αυτό που λέει το ακρώνυμο:ασύγχρονη javascript (asynchronous javascript). Το παραπάνω έχει σαν αποτελεσμα να μην σου εξασφαλίζεται η σειρά εκτέλεσης των requests σου. Άρα, μια λύση είναι να την κάνεις σύγχρονη (synchronous) την κλήση. >var html = $.ajax({ url: "some.php", async: false }).responseText; πηγή: http://api.jquery.com/jQuery.ajax/
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.