Προς το περιεχόμενο

πρόβλημα με autosuggest jquery


joy1

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω ένα πρόβλημα με το 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>'; ?>

Δημοσ.

Το πρόβλημα δεν είναι στην php, αλλά στο γεγονός ότι το ajax request είναι αυτό που λέει το ακρώνυμο:ασύγχρονη javascript (asynchronous javascript). Το παραπάνω έχει σαν αποτελεσμα να μην σου εξασφαλίζεται η σειρά εκτέλεσης των requests σου.

Άρα, μια λύση είναι να την κάνεις σύγχρονη (synchronous) την κλήση.

 

>var html = $.ajax({   url: "some.php",   async: false  }).responseText;

 

πηγή: http://api.jquery.com/jQuery.ajax/

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...