2011-11-28 16 views
10

De jQuery UI site (fuente veiw):jQuery UI autocompletar: ¿cómo enviar datos de la publicación?

$("#birds").autocomplete({ 
    source: "search.php", 
    minLength: 2, 
    select: function(event, ui) { 
     log(ui.item ? 
      "Selected: " + ui.item.value + " aka " + ui.item.id : 
      "Nothing selected, input was " + this.value); 
    } 
}); 

Así como veo que no hay opciones de cómo hacer la solicitud Ajax con datos de envío a la "search.php".

pero tengo que hacer eso para enviar algún filtro de campo de entrada anterior (campo actual: ciudad, campo anterior: país).

¿Cómo hacer eso?

Gracias!

Respuesta

18

trate de cambiar la fuente a ser un método que utiliza $ .post:

$("#birds").autocomplete({ 
    source: function (request, response) { 
    $.post("search.php", request, response); 
    }, 
    ... 
+0

Bien, intentaré esto. Gracias –

+0

¿Funciona? Lo intento, pero para mí no funciona. ¡Gracias! –

+0

¡Trabajó para mí como un encanto! ¡Gracias! – Jagger

3
$("#birds").autocomplete({ 
source: function (request, response) { 
    $.ajax({ 
    type: "POST", 
    url:"search.php", 
    data: request, 
    success: response, 
    dataType: 'json' 
}); 
    } 
}, {minLength: 3 }); 

//------------------------- 
//search.php - example with request from DB 

// 


$link = mysql_connect($mysql_server, $mysql_login, $mysql_password) 
     or die("Could not connect: " . mysql_error()); 
    mysql_select_db($mysql_database) or die("Could not select database"); 
    mysql_set_charset('utf8'); 

$req = "SELECT mydata FROM $mysql_table WHERE mydata LIKE '".$_REQUEST['term']."%' ORDER BY mydata ASC"; 
$query = mysql_query($req); 

while($row = mysql_fetch_array($query)) 
{ 
    $results[] = array('label' => $row['mydata']); 
} 


echo json_encode($results); 
?> 
2

tenía esta misma necesidad y no hay ningún ejemplo de stackoverflow funcionaba correctamente.

Al probar las contribuciones de los autores diffrent y ajustar aquí y allá es muy probable que el siguiente ejemplo de lo que cualquiera estaría buscando en un autocompletar que

  1. Enviar cabo petición POST.

  2. No es necesario ajustar la IU de autocompletar principal.

  3. Envía múltiples parámetros para la evaluación.

  4. Recupera datos de un archivo PHP de la base de datos.

Todo el crédito es a las muchas personas a las que usó su muestra de respuestas para hacer esta muestra de trabajo.

 $("#employee_name").autocomplete({ 
     source: function (request, response) { 
     $.ajax({ 
     type: "POST", 
     url:"employees.php", 
     data: {term:request.term,my_variable2:"variable2_data"}, 
     success: response, 
     dataType: 'json', 
     minLength: 2, 
     delay: 100 
      }); 
     }}); 
+0

Hermosa, gracias! – mcraen

0

Lo que funcionó bien para mí. Necesitaba algunos datos personalizados, por lo que saqué el término de búsqueda term: request.term de la solicitud de la siguiente manera:

jQuery('.some-autocomplete').autocomplete({ 
    source: function(request, response) { 
     jQuery.post(ajaxurl, {action: 'some_content_search', type: type, term: request.term}, response, 'json'); 
    }, 
    minLength: 2, 
    ... 
Cuestiones relacionadas