【问题标题】:jQuery autocomplete - assigning one JSON PHP array to multiple HTML ID tagsjQuery 自动完成 - 将一个 JSON PHP 数组分配给多个 HTML ID 标签
【发布时间】:2015-07-15 05:38:11
【问题描述】:

我已使用 JSON 编码从 PHP 文件成功设置 jQuery 自动完成调用。我成功地将 KVP(键值对)数组发送回我的 HTML。

我遇到的问题是,我希望将部分数组项发送到一个 id="sometag1" 并将其他数组项发送到 id="sometag2" 和 id="sometag3"。

这是我的 javascript jquery 代码:

jQuery(document).ready(function(data) {
        $('#edit-ad-location').autocomplete({
            source: '/postcodes-latlong.php',
            minLength: 2
        });
    });

文件“postcodes-latlong.php”包含以下代码:

if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
    $new_row = $row['post_title'];
    if ($new_row != $this_row) {
        $data[] = array(
                'id' => $row['meta_id'],
                'label' => $row['post_title'] ,
                'value' => $row['post_title'] ,
            );
        }
    if ($row['meta_key'] == "_aphs_FYN_latitude") {
    $data[count($data) -1]["geo-search-lat"] = $row['meta_value'];

    }
    if ($row['meta_key'] == "_aphs_FYN_longitude") {
        $data[count($data) -1]["geo-search-lng"] = $row['meta_value'];
    }
    $this_row = $row['post_title'];
    }
}


// jQuery wants JSON data
echo json_encode($data);
flush();

如果 term 4000 被传递,我们会得到以下返回数组:

[{
       "id":"364307",
        "label":"4000, BRISBANE",
        "value":"4000, BRISBANE",
        "geo-search-lat":"-27.46758",
        "geo-search-lng":"153.027892"
      },{
        "id":"364322",
        "label":"4000, BRISBANE ADELAIDE STREET",
        "value":"4000, BRISBANE ADELAIDE STREET",
        "geo-search-lat":"-27.466517",
        "geo-search-lng":"153.027495"
      },{
        "id":"364337",
        "label":"4000, SPRING HILL",
        "value":"4000, SPRING HILL",
        "geo-search-lat":"-27.460873",
        "geo-search-lng":"153.024454"
}]

我想要实现的是将 ID、标签和值发送到带有 id:"#edit-ad-location" 的自动完成字段 - 这工作正常。

我还希望将纬度和经度值发送到另外两个id标签#geo-search-lat和#geo-search-lng,如下所示:

`<div .... id="geo-search-lat" value=""> </div>`

`<div .... id="geo-search-lng" value=""> </div>`

我尝试过执行以下操作(使用 3 个单独的标签,每个 id 一个)但这不起作用:

`jQuery(document).ready(function(data){
    $('#edit-ad-location', '#geo-search-lat', '#geo-search-lng').autocomplete({source:'/postcodes-latlong.php', minLength:2});
});`

如何将返回的 JSON 数组中的 geo-search-lat 和 geo-search-lng 值传递给:

mapDiv.gmap3({
                        getgeoloc:{
                            callback : function(latLng){
                                if (latLng){
                                    jQuery('#geo-search-lat').val(latLng.lat());
                                    jQuery('#geo-search-lng').val(latLng.lng());
                                }
                            }
                        }
                    });

【问题讨论】:

  • 我发现您的 php 代码有问题:$data[] = array_push($data...) 不正确,它在数组中插入数字。请修复并报告 JSON(一旦您的 JSON 修复,PHP 代码将变得无关紧要)。
  • 另外:我希望将纬度和经度值发送到另外两个 id 标签 预期的行为是什么?当用户从列表中选择一个选项时,您要填写这些字段(例如,用户选择“4503,KALLANGUR”,而其他两个框填充 -27.25075 和 152.99)还是您想要其他内容?
  • 在花了很多时间解决这个问题后,我注意到以下 jQuery 代码可能会有所帮助: mapDiv.gmap3({ getgeoloc:{ callback : function(latLng){ if (latLng){ jQuery('#geo -search-lat').val(latLng.lat()); jQuery('#geo-search-lng').val(latLng.lng()); } } } });
  • 我希望将纬度和经度值发送到 div 标签,所以我们有: id="geo-search-lat" value="-27.25075" 和 id="geo-search-lng" value="152.99" - 这些值在 HTML 请求中传递。此外,我尝试过“array_merge”、“array_splice”,但无法将数据“插入”到数组中。它似乎将它添加到最后,但不是在数组“内部”。
  • 您希望在用户从列表中选择一个选项之后 填充文本框,对吗?至于您的 PHP 问题,我 认为(未测试)您可以简单地添加如下键:$data[count($data) -1]["geo-search-lat"] = &lt;meta_value&gt;.

标签: jquery arrays json autocomplete latitude-longitude


【解决方案1】:

是的,这是正确的。当第一个字段自动完成并选择郊区/邮政编码 (onClick) 时,其他两个 &lt;div id="geo-search-lat" value=""&gt; and &lt;div id="geo-search-lng" value=""&gt; 标签的值将根据 JSON 数组的返回值填充。我将按照建议测试 php 修改并回复您...

【讨论】:

  • 你真是个大脑!!这有效:code if ($row['meta_key'] == "_aphs_FYN_latitude") { $data[count($data) -1]["geo-search-lat"] = $row['meta_value'] ; } if ($row['meta_key'] == "_aphs_FYN_longitude") { $data[count($data) -1]["geo-search-lng"] = $row['meta_value']; } /code
  • 所以我仍然有将 JSON 数组的一部分传递给自动完成字段,并将数组的其余部分传递给其他 2 个 DIV ID 标签的问题。但我有这段代码可以帮助推动事情向前发展:code mapDiv.gmap3({ getgeoloc:{ callback : function(latLng){ if (latLng){ jQuery('#geo-search-lat').val(latLng .lat()); jQuery('#geo-search-lng').val(latLng.lng()); } } } });
猜你喜欢
  • 1970-01-01
  • 2013-01-06
  • 2017-11-09
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多