【问题标题】:Getting JSON data with AJAX and converting to array of strings使用 AJAX 获取 JSON 数据并转换为字符串数组
【发布时间】:2014-09-24 20:17:30
【问题描述】:

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

我主页上的 Jquery:

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

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

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

echo json_encode($displaynames);

看起来像: [{"DisplayName":"XXXX Street Middle School"},{"DisplayName":"XXXXX Schools"},{"DisplayName":"XXXX Elementary School"}

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

【问题讨论】:

  • “我认为这行不通。”这是一个问题吗。或信息?
  • 如何在 PHP 中构建 $displaynames 变量?我认为您的错误在哪里
  • 您认为正确的格式到底是什么?您还应该使用console.log() 进行调试。它更加有用和信息丰富。尤其是在使用对象时。
  • 您的数据似乎没问题。只需使用 console.log(results) 即可查看 ist 内容 - alert 仅适用于显式字符串。
  • 你们不看第一句话吗? “我正在尝试将我的数据放入一个字符串数组中,以便我可以将其用作 jquery 自动完成的数据集。”

标签: php jquery ajax


【解决方案1】:
$.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】:

    这取决于您将对象放入的内容。您获得的对象很好,但要访问其中的值,您需要通过 DisplayName 属性访问它们。

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

    这将记录 XXX Street Middle School、XXXX Schools 等。

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

    ["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() 的调用,并且只会在成功时获得一个 json 对象功能。

    【讨论】:

    • 谢谢。最后,一个聪明的反应。这很有意义。
    猜你喜欢
    • 2012-11-17
    • 2017-09-11
    • 2016-08-09
    • 1970-01-01
    • 2018-04-27
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多