Php jquery自动完成ajax响应分离

Php jquery自动完成ajax响应分离,php,jquery,ajax,jquery-ui,Php,Jquery,Ajax,Jquery Ui,HTML部分: <form method="post" id="src-form" name="src-form" action="<?php echo $SCRIPT_NAME; ?>"> <input id="src-location" name="src-location" autocomplete="off" /> <input type="submit" name="src_submit" id=

HTML部分:

  <form method="post" id="src-form" name="src-form" action="<?php echo $SCRIPT_NAME; ?>">

          <input id="src-location" name="src-location" autocomplete="off" />

          <input type="submit" name="src_submit" id="src_submit" value="Search" />

        </form>

    <script>

      $(document).ready(function() {

        $("input#src-location").autocomplete({

     source: "autosuggest-server.php"
        });

       $('input#src-location').focus(function()

        {       

                $(this).val('');


        });  

    });  

    </script>
<?php

include("db.php");

$return_arr = array();


$fetch = mysql_query("SELECT * FROM city INNER JOIN country ON country.countryid = city.countryid where cityname like '%" . mysql_real_escape_string($_GET['term']) . "%' ORDER BY cityname ASC limit 0,20"); 

    while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

        $row_array['id'] = $row['id'];

        $row_array['value'] = $row['cityname'].", ".$row['countryname'];

        array_push($return_arr,$row_array);
    }

echo json_encode($return_arr);
?>
$row_array['value'] = $row['cityname'].", ".$row['countryname_'.$lang].",".$row['cityid'];
当我输入一些东西时,它会像预期的那样呼出cityid。有没有办法将cityid与实际显示的值分开,并将其输入到隐藏的输入文本字段中

我想做的是按cityid搜索,但我不希望它显示在搜索字段中

还有其他解决办法吗


非常感谢

我建议您将响应作为JSON对象返回,因此在php中您可以:

$dataArray = ... //get city data where key=cityId, value=1, key=cityName, value=London etc.
echo json_encode($dataArray);
这将返回如下结果:

{'cityId':'1','cityName':'London'}
现在在javascript中,通过添加以下内容定义接受json的ajax请求:

dataType: 'json'
一旦收到响应消息,您可以执行以下操作:

$('#myHiddenField').val(msg.cityId);
var cityName = msg.cityName;
//do whatever you like with cityName

你在使用自动完成插件吗?请发布一个指向它的链接。@ftom2,OP已经指定了标签
jqueryui
@OP:我能想到的最简单的方法是将您的查询修改为类似这样的内容,其中cityid=term,这种方法将通过
cityid
进行搜索,结果将通过
cirtyname
@Adnan OP同时需要cityid和cityName,分离应该在javascript中完成。@ftom2-这是我的想法,因为实际的javascript打印出结果,但我不确定如何打印。另外,我还包括了完成这项工作的js脚本。谢谢你的帮助。我想这是关键部分:if(msg!=0)$(“#ajax_response”).fadeIn(“slow”).html(msg);但即使我成功地将其分离,我也不知道如何使用它设置隐藏字段的值。它是一个json对象。echo json_encode($return_arr);----好啊在javascript文件中,我可以看到$(“#ajax_response”).fadeIn(“slow”).html(msg);有没有一种方法可以在显示消息之前在这里修剪消息,并按照上面的解释进行隐藏字段求值?您得到的json格式是什么?(在msg上执行alert或console.log())我不知道。我是新手。$所有内容都在上面的代码中。这就是我所知道的。请发送警报(msg)并让我知道您得到了什么。我稍后会回来,因为我对代码感到困惑。我需要把它整理一下。我会做好准备,看看会发生什么。谢谢你的帮助。我非常感激!