javascript - 从 AJAX 请求返回 while 循环

标签 javascript php arrays ajax while-loop

我正在尝试从 AJAX 请求返回 while 循环,同时还返回其他数据。

基本上,我当前从 php 请求返回 3 或 4 组数据,并在返回时将它们传递到我的应用程序中。但我需要能够循环遍历一组数据以打印到表中。

我的所有代码都正常工作,我没有收到任何错误,它只是没有正确返回我的设备数组。

我已经很接近了,我想我知道我的问题是什么,我只是现在想不出如何解决它。

Javascript

function getDataViaAjax(id, days) {
    $.ajax({
        url: 'assets/processes/getWebsiteStatsData.php', // URL of php command
        type: 'POST', //TYPE
        data: {'id': id, 'days': days}, //Variables in JSON FORMAT
        success: function(results) {
            //SUCCESSFUL REQUEST FUNCTION
            var result = $.parseJSON(results);
            document.getElementById("websiteStatisticsDiv").style.display = "block";
            document.querySelector("#websiteStatisticsURL > strong").innerHTML = result.dataArray.url;
            document.querySelector("#websiteStatisticsBounceRate").innerHTML = result.dataArray.bounceRate;
            document.querySelector("#websiteStatisticsDiv > div > div.col-lg-4.col-md-4.col-sm-12.col-xs-12.left > div > div").style.width = result.dataArray.bounceRate;
            document.getElementById("websiteStatisticsConversionRate").innerHTML = result.dataArray.conversionRate;
            document.querySelector("#websiteStatisticsDiv > div > div:nth-child(2) > div > div").style.width = result.dataArray.conversionRate;
            var arrayLength = result.phonesArray.device.length;
            for (var i = 0; i < arrayLength; i++) {
                document.getElementById("arrayTest").innerHTML = JSON.stringify(result.phonesArray.device);
            }
        }
    }); // end ajax call
};

PHP

<?php
include "../includes/includes.php";
$id = $_POST['id'];
$conversionRateDays = $_POST['days'];

$getSites = $db->query_assoc("SQL QUERY GOES HERE");
$getBounceRate = $db->query_assoc("SQL QUERY GOES HERE");
$getConversionRate = $db->query_assoc("SQL QUERY GOES HERE")
$getPhoneResults = $db->query_assoc("SQL QUERY GOES HERE");

$url = $getSites['main_url'];
$bounceRate = $getBounceRate['result'];
$conversionRate = $getConversionRate['result'];
$dataArray = array('url' => $url,'bounceRate' => $bounceRate, 'conversionRate' => $conversionRate);
$results = array('dataArray' => $dataArray, 'phonesArray' => $getPhoneResults);
echo json_encode($results, JSON_FORCE_OBJECT);
?>

此刻如果我运行

console.log(result.phonesArray.device);

它只返回数据库的第一行,但如果我在像这样的 for 循环中运行它

for (var i = 0; i < arrayLength; i++) {
    console.log(result.phonesArray.device[i]);
}

它返回第一行的单个字母。例如,我的第一行是 iPhone,上面的命令将循环并将每个字母记录为单独的对象。

我认为我需要将返回的每一行保存为单独的数组对象,如 device、device1、device2、device3、device4,因为它每次都会保存设备数组名称,并且只返回 1 个结果。

如有任何帮助,我们将不胜感激!

最佳答案

如果不查看 phoneArray 变量中的实际内容,很难说,但看起来您正在做的事情有点可疑:

 var arrayLength = result.phonesArray.device.length;

假设(根据名称并且它是数据库查询的结果集)您尝试处理的数组是 phonesArray,这不应该是:

 var arrayLength = result.phonesArray.length;

然后您可以像这样访问成员:

 for (var i = 0; i < arrayLength; i++) {
     console.log(result.phonesArray[i].device);
 }

关于javascript - 从 AJAX 请求返回 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41740055/

相关文章:

javascript - 关于本地与服务器问题的 HTML 页面

javascript - 如何在 JQuery 中编辑 'clip' CSS 属性?

php - 无法获取 $_SESSION 登录用户名?

python - 从 3D 数组中减去 2D 数组

javascript - 如何从 JSON 响应对象中删除对象

javascript - gwt编译器找不到入口点类

php - 用于测试 Web 表单中用户输入的正确处理的工具

javascript - 如何在angularjs中从php获取json数据

c++ - 简单的 C++ 数组逻辑问题

java - RadixSort 算法运行时