我正在使用JQuery自动完成插件,我需要一些格式化数据的帮助。我有一个可以以XML或JSON输出数据的url:
JSON示例:
[{"location":{"address":"Dortha Pike","city":"Emmerichburgh","created_at":"2011-05-19T00:03:20Z","id":3,"name":"Caroline Fahey DDS","state":"Illinois","updated_at":"2011-05-19T00:03:20Z","zip":"80822-2018"}}
XML示例:
<locations type="array">
<location>
<address>Dortha Pike</address>
<city>Emmerichburgh</city>
<created-at type="datetime">2011-05-19T00:03:20Z</created-at>
<id type="integer">3</id>
<name>Caroline Fahey DDS</name>
<state>Illinois</state>
<updated-at type="datetime">2011-05-19T00:03:20Z</updated-at>
<zip>80822-2018</zip>
</location>
下面的函数接受JS数组中的数据我的问题是,我需要获取上面的任何一个数据,并将其格式化,如您所见var数据如下:
$(document).ready(function(){
var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
$("#example").autocomplete(data);
});
如果你使用的是autocomplete,我认为你在使用,用空格分隔的字符串只有一种格式。。。只要变量有特定的名称,就可以使用JSON。
$item = $item . "{ "id": "$id", "label": "$name"},";
因此,在您的情况下,您必须选择一个字段,如name,并将所有名称解析为一个字符串,如:
[
{
"id": 1,
"label": "Caroline Fahey DDS"
},
{
"id": "2",
"label": "Another Name"
}
]
当然可以帮助你做到这一点,只需首先检查字符串是否有效,因为它可能是一个不同的插件。
EDIT:提供示例
php/ajax响应
<?php
$q = getGET("term");
if($q != "")
{
$q = fquery_sanitize($q);
$sql = "select ManufacturerID, ManufacturerName from sds_manufacturer ".
" where ManufacturerName LIKE '%$q%' ".
" order by ManufacturerName";
$result = fquery_db($sql);
$item= "";
while($row=mysql_fetch_assoc($result))
{
$id = $row["ManufacturerID"];
$name = $row["ManufacturerName"];
$item = $item . "{ "id": "$id", "label": "$name"},";
}
echo "[";
echo trim($item, ",");
echo "]";
}
?>
自动完成
$('.manufacturer-form .name').autocomplete({
source: "/portal/inc/prod_manage/man-list-json.php",
minLength: 3,
select: function( event, ui ) {
manufacturer_select(ui.item.id);
}