0

我正在使用选择的 jquery 插件,它将一个多选框变成一个 facebook 样式选择器。我用英国邮政编码填充它,并显示选定的邮政编码。

由于我的 PHP 请求正在从我的邮政编码数据库中检索大量数据,因此页面运行速度显然很慢,但我希望只能在用户在输入框中输入 1 个字符后才能检索数据。

我知道我必须用 Ajax 来做这件事,我认为是 JSON,但现在确定怎么做?

这是我的代码

    <select name="zipcode[]" style="width:600px; height:250px;" multiple class="chzn-select" id="zipcode">

          <?php $arraypostcode = explode(",", $zipcode); ?>
    <?php
do { // begin loop
?>
    <option value="<?php echo $row_postcode['code']?>"<?php for ($i=0; $i<sizeof($arraypostcode); $i++) {if ($row_postcode['code'] == $arraypostcode[$i]) {echo " selected"; break;}}?>><?php echo $row_postcode['code']?></option>
    <?php
} while ($row_postcode = mysql_fetch_assoc($postcode)); // end loop
  $rows = mysql_num_rows($postcode);
  if($rows > 0) {
      mysql_data_seek($postcode, 0);
      $row_postcode = mysql_fetch_assoc($postcode);
  }
?>
  </select>

PHP请求:

<?php

$postcode = mysql_query( "SELECT postcode.code FROM postcode");
$row_postcode = mysql_fetch_assoc($postcode);
$totalRows_postcode = mysql_num_rows($postcode);

?>

有任何想法吗?

4

2 回答 2

0

你可以尝试这些方面的东西。

在表单页面上:

<input type="text" name="postcodeSearch" onChange="getPostcodes(this.value); return false;">
<div id="postcodeSelector"></div>

Javascript:

function getPostcodes(input){
    if(input.length >= 3){
        searchPostcodes(input);
    }
}

function searchPostcodes(input){
    $.ajax({
        url:'/url/to/postcodeSearch',
        data: "input=" + input,
        dataType: 'html',
        timeout: 5000,
        success: function(data, status) {
            $("#postcodeSelector").html(data);
        }
    }
}

在 /usr/to/postcodeSearch 页面上:

$input = $_GET["input"];

## Do database search with 'input' string
$postcodes = $somedbconnection->searchPostcodes($input);
?>
<select name="postcode">
    <? foreach($postcodes as $postcode){ ?>
        <option value='<?=$postcode["id"]?>'><?=$postcode["postcode"]?></option>
    <? } ?>
</select>
于 2013-04-24T20:11:44.903 回答
0

使用阿贾克斯:

你可以跑

$postcode = mysql_query( "SELECT postcode.code FROM postcode WHERE code LIKE 'YOUR_USER_VALUE%'"); $row_postcode = mysql_fetch_assoc($postcode); $totalRows_postcode = mysql_num_rows($postcode);

每次用户输入字符时都必须运行它

LIKE 'VALUE%' this in sql 几乎意味着startsWith("VALUE") 如果您熟悉其他编程语言如java或其他东西。

如果您的值存储为数字,那么您将不得不转换: cast(code as char)

于 2013-04-24T19:46:26.697 回答