Javascript 从AJAX请求返回while循环

Javascript 从AJAX请求返回while循环,javascript,php,arrays,ajax,while-loop,Javascript,Php,Arrays,Ajax,While Loop,我试图从AJAX请求返回while循环,同时也返回其他数据 基本上,我目前正在从php请求返回3或4组数据,并在返回时将它们传递到我的应用程序中。但我需要能够循环处理其中一组数据以打印到表中 我所有的代码都正常工作,没有出现任何错误,只是没有正确返回我的设备数组 我离得很近,我想我知道我的问题是什么,我只是一时想不出如何解决它 Javascript function getDataViaAjax(id, days) { $.ajax({ url: 'assets/proc

我试图从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
};
它只返回数据库的第一行,但若我像这样在for循环中运行它

for (var i = 0; i < arrayLength; i++) {
    console.log(result.phonesArray.device[i]);
}
for(变量i=0;i
它返回第一行的单个字母。例如,我的第一行是iPhone,上面的命令将循环并记录每个字母作为单独的对象

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


任何帮助都将不胜感激

如果看不到
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);
 }
for(变量i=0;i

如果看不到
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);
 }
for(变量i=0;i

首先,我会检查数据库aka
$getPhoneResults
中的结果,方法如下:

echo "<pre>"; var_dump($getPhoneResults); die();
对于循环,您可以尝试使用jQuery执行此操作:

header("Content-type: application/json; charset=utf-8");
顺便说一下……添加:

$.parseJSON(results);
在输出数据之前,您的响应类型将是正确的,您不必执行以下操作:

 $getPhoneResults = $db->query("SQL QUERY GOES HERE");
 $newDeviceArray = array();
 while ($row = mysqli_fetch_assoc($getPhoneResults)){
   $newDeviceArray[] = $row;
 };
 $url = $getSites['main_url'];
 $bounceRate = $getBounceRate['result'];
 $conversionRate = $getConversionRate['result'];
 $dataArray = array('url' => $url,'bounceRate' => $bounceRate, 'conversionRate' => $conversionRate);
 $results = array('dataArray' => $dataArray, 'phonesArray' => $newDeviceArray);
 echo json_encode($results, JSON_FORCE_OBJECT);

希望能有所帮助。

我会先检查数据库中的结果,例如执行以下操作:

echo "<pre>"; var_dump($getPhoneResults); die();
对于循环,您可以尝试使用jQuery执行此操作:

header("Content-type: application/json; charset=utf-8");
顺便说一下……添加:

$.parseJSON(results);
在输出数据之前,您的响应类型将是正确的,您不必执行以下操作:

 $getPhoneResults = $db->query("SQL QUERY GOES HERE");
 $newDeviceArray = array();
 while ($row = mysqli_fetch_assoc($getPhoneResults)){
   $newDeviceArray[] = $row;
 };
 $url = $getSites['main_url'];
 $bounceRate = $getBounceRate['result'];
 $conversionRate = $getConversionRate['result'];
 $dataArray = array('url' => $url,'bounceRate' => $bounceRate, 'conversionRate' => $conversionRate);
 $results = array('dataArray' => $dataArray, 'phonesArray' => $newDeviceArray);
 echo json_encode($results, JSON_FORCE_OBJECT);

希望有帮助。

解决了这个问题,我需要用PHP重新创建数组。和往常一样,如果我从数据库中检索到一个关联数组并将其回显,它将只回显第一行,除非我通过循环运行它

数组正在工作,它只返回1个结果。我把我的php改为

 console.log(result.phonesArray[0]);
现在当我跑的时候


它正确地返回行。

解决了这个问题,结果我需要用PHP重新创建数组。和往常一样,如果我从数据库中检索到一个关联数组并将其回显,它将只回显第一行,除非我通过循环运行它

数组正在工作,它只返回1个结果。我把我的php改为

 console.log(result.phonesArray[0]);
现在当我跑的时候


它正确返回行。

如果控制台记录phones数组长度,则返回undefined,但如果控制台记录phonesArray.device.length,则返回返回的第一行的字符数。例如,它将返回6,因为第一行是iPhone,其中包含6个字符。因此,phonesArray实际上不是数组。您是否尝试过
console.log(result)
检查从服务器获取的数据?如果控制台记录phones数组长度,则返回undefined,但如果控制台记录phonesArray.device.length,则返回返回的第一行的字符数。例如,它将返回6,因为第一行是iPhone,其中包含6个字符。因此,phonesArray实际上不是数组。您是否尝试过
console.log(result)
检查从服务器获取的数据?