【问题标题】:Pass multiple arrays to JS from PHP file将多个数组从 PHP 文件传递​​给 JS
【发布时间】:2014-05-02 19:15:11
【问题描述】:

我在一个 php 文件中获取了一堆数据,该文件设置在多个数组中。理想情况下,我想将所有这些传递给我的 JS 文件,然后抓取每个数组并将其输出到站点的不同部分。我想最简单的方法是将所有数组推送到一个数组中,然后在数据通过 ajax 传递后获取其中的特定数组。

这是我的 PHP

$neighborhoodArray();
$areaArray();
$masterArray = array();

// Push info into 2 arrays
while($buildings = mysql_fetch_assoc($allBuildingsQuery)) {
   array_push($neighborhoodArray, $buildings['NEIGHBORHOOD']);
   array_push($areaArray, $buildings['AREA']);
}

while($apartments = mysql_fetch_assoc($allApartmentsQuery)) {
   array_push($neighborhoodArray, $apartments['NEIGHBORHOOD']);
   array_push($areaArray, $apartments['AREA']);
}

我希望能够用一个键而不是数字来识别每个数组,因为我最终会在这个主数组中添加更多的东西

// parseValues is a function I set up to remove empty values and duplicates
$areaValues = array("Area" => parseValues($areaArray));
$neighborhoodValues = array("Neighborhood" => parseValues($neighborhoodArray));

array_push($masterArray, $areaValues);
array_push($masterArray, $neighborhoodValues);

$valuesForOutput = json_encode($masterArray);

echo $valuesForOutput;

理想情况下,我希望能够通过类似这样的方式将其输出到页面的特定部分

$('.container').html(values.Area);
$('.different-container').html(values.Neighborhood);

这就是我的 ajax 调用

$.ajax({
type: "GET",
url: "procceses/search-values.php?"+url,
datatype: "jsonp",
success: function(values){

  // AreaOnly = values['Area'];
  // AreaOnly = values.Area;

  console.log(values);
    }
});

我不知道如何浏览从 PHP 文件返回的值。响应格式如下。 Area 和 Neighborhood 成为我的对象,但我希望它们成为我可以迭代的数组。我也不知道如何抓取区域和附近的对象。

[
{
    "Area": {
        "0": "Brooklyn",
        "1": "Bronx",
        "2": "Queens",
        "3": "Out of Area",
        "7": "Manhattan"
    }
},
{
    "Neighborhood": {
        "0": "East Flatbush",
        "1": "Williamsbridge",
        "2": "Cambria Heights",
        "3": "Westchester",
     }
 }
]

【问题讨论】:

  • 成功函数中的console.log()显示什么?为什么datatype: "jsonp" 看起来不像您在使用 JSONP。
  • 啊我不知道jsonp和json之间的区别。 console.log 输出我在顶部包含的最后一点信息

标签: javascript php jquery ajax arrays


【解决方案1】:

通过以您的方式使用 array_push(),您可以在数组中添加一个带有数字索引的附加层。

如果你想避免这种情况,你应该在 php 中填写你的数组:

$masterArray['Area'] = parseValues($areaArray);
// etc.

现在,您的 Area 对象位于:

values[0].Area
values[1].Neighborhood
// etc.

【讨论】:

  • 按照您的建议设置阵列可以删除该层。但是对于设置,values[0].Area(原始设置)和 values.Area(新设置)返回未定义。然而,值输出一切都很好。
  • 啊,我明白了,好像我必须先解析它 (response = $.parseJSON(values);) 才能访问它
猜你喜欢
  • 2018-09-25
  • 2018-02-02
  • 2014-04-05
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-22
  • 2021-01-07
相关资源
最近更新 更多