代码之家  ›  专栏  ›  技术社区  ›  devlin carnate

使用AJAX获取JSON数据并转换为字符串数组

  •  -7
  • devlin carnate  · 技术社区  · 12 年前

    我正在尝试将数据放入字符串数组,以便将其用作jquery自动完成的数据集。我现在得到的是一个对象数组,我认为它不起作用。

    主页上的Jquery:

    $.get("get_schools.php", function(data) {
                   var results = jQuery.parseJSON(data);
                   alert(results);
    });
    

    这将产生以下格式的数据: [object object],[object object][对象对象],[objectObject]

    在get_schools.php上: 我查询数据库并将结果返回到名为$displaynames的数组。然后:

    echo json_encode($displaynames);
    

    看起来像: 〔{“DisplayName”:“XXXX街中学”},{“Display Name”:”XXXXX学校“},}“DisplayName”:”XXXX小学“}

    更新: 这个问题被标记为可能重复,但另一个问题与获取对象的属性有关。我没有试图获取对象的属性。我试图将对象数组转换为字符串数组。我需要属性名以及结果中的值。另一个问题只返回值。

    2 回复  |  直到 11 年前
        1
  •  2
  •   wes    12 年前
    $.get("get_schools.php", function(data) {
               var results = jQuery.parseJSON(data).map(function (item) {
                   return item.DisplayName;
               });
               alert(results);
    });
    

    结果将是字符串数组

    ["XXXX Street Middle School", "XXXXX Schools", "XXXX Elementary School"]
    
        2
  •  1
  •   Ben Potter    12 年前

    这将取决于你把物体放在什么地方。所给的对象很好,但为了访问其中的值,您需要通过DisplayName属性访问它们。

    $.each(results, function(i,e) {
        console.log(e.DisplayName);
    })
    

    这将记录XXX街中学、XXXX学校等。

    要避免这种行为,请不要将值推入数组的命名部分。 我假设您希望结果类似于:

    ["XXX Street", "xxxxx school", "xxxx", ... ]
    

    因此,在php代码中,您需要执行以下操作:

    $json = array();
    foreach($school in $schools) {
        array_push($json, $school->displayName); //obviously this is unique to your application and not this verbatim
    }
    echo json_encode($json);
    

    基本上,您需要一个列表,而不是关联数组。现在,如果您有更多需要显示的关于单个学校的信息,则需要一个关联数组。但考虑到您的使用需求,我相信这更接近您的需求。

    顺便说一句,如果在jQuery中使用$.getJSON()函数(与$.get相反),则可以避免调用jQuery.parseJSON(。