无论是JSON还是XML,我都需要从URL格式化JS数组



我正在使用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);
          }

最新更新