You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Jquery Autocomplete无法与Mysql数据配合使用?附相关代码

Hey there, let's work through why your jQuery UI Autocomplete isn't playing nice with your MySQL data. Looking at your code snippet, there are a few common (and easy to fix) issues we can tackle step by step:


1. Fix the truncated AJAX parameter in your JS code

Your current data line cuts off mid-way, and you're not correctly passing the user's input to your PHP script. Since you've got helper functions for comma-separated inputs, we should use extractLast(request.term) to target the most recent input the user is typing. Here's the corrected JS section:

$(function() { 
  function split( val ) { 
    return val.split( /,\s*/ ); 
  } 
  function extractLast( term ) { 
    return split( term ).pop(); 
  } 
  $( ".country_suggestion" ).bind( "keydown", function( event ) { 
    if ( event.keyCode === $.ui.keyCode.TAB && $( this ).autocomplete( "instance" ).menu.active ) { 
      event.preventDefault(); 
    } 
  }) 
  .autocomplete({ 
    minLength: 1, 
    source: function( request, response ) { 
      $.ajax({ 
        type: "POST", 
        url: "/suggestion.php", 
        data: { term: extractLast(request.term) }, // Pass the latest input term
        dataType: "json", // Explicitly expect JSON response
        success: function( data ) { 
          response( data ); // Send MySQL results back to Autocomplete
        },
        error: function(xhr, status, error) {
          // Debug helper: Check what's going wrong with the request
          console.log("AJAX Error:", status, error);
          console.log("Server Response:", xhr.responseText);
        }
      }); 
    },
    // Handle selection for comma-separated inputs
    select: function( event, ui ) { 
      var terms = split( this.value ); 
      terms.pop(); // Remove the partial input
      terms.push( ui.item.value ); // Add the selected suggestion
      terms.push( "" ); // Leave space for next input
      this.value = terms.join( ", " ); 
      return false; 
    } 
  });
});

2. Make sure your suggestion.php is correctly querying MySQL

Your PHP script needs to safely receive the input term, query your database, and return valid JSON (which Autocomplete requires). Here's a secure example using PDO (to avoid SQL injection):

<?php
// Connect to your MySQL database
$pdo = new PDO('mysql:host=localhost;dbname=YOUR_DB_NAME', 'YOUR_USERNAME', 'YOUR_PASSWORD');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Get the input term from the AJAX request
$term = $_POST['term'] ?? '';

// Query for matching countries (adjust table/column names to match your DB)
$stmt = $pdo->prepare("SELECT country_name FROM countries WHERE country_name LIKE :term LIMIT 10");
$stmt->execute(['term' => "%$term%"]);

// Fetch results as a simple array
$suggestions = $stmt->fetchAll(PDO::FETCH_COLUMN);

// Return JSON to the frontend
echo json_encode($suggestions);
?>
  • Replace YOUR_DB_NAME, YOUR_USERNAME, YOUR_PASSWORD, and the table/column names with your actual database details.
  • Using prepared statements here is critical to prevent SQL injection attacks.

3. Debugging steps if it still isn't working

If things are still broken, open your browser's dev tools (F12) and check the Network tab:

  • Look for the suggestion.php request: Is it returning a 200 OK status?
  • Check the Request Payload to confirm the term parameter is being sent correctly.
  • Check the Response tab: Is it returning valid JSON, or is there a PHP error message?

内容的提问来源于stack exchange,提问作者Sapriya Jyoti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:43:34