AJAX 요청에서 while 루프를 반환하고 다른 데이터를 반환하려고합니다.AJAX 요청에서 while 루프 반환
기본적으로 현재 PHP 요청에서 3 또는 4 세트의 데이터를 반환하고이를 반환 할 때 내 응용 프로그램에 전달합니다. 하지만 테이블에 인쇄 할 데이터 집합 중 하나를 반복 할 수 있어야합니다.
내 코드가 모두 작동하지만 오류가 발생하지 않고 장치 배열이 올바르게 반환되지 않습니다.
나는 아주 가깝고, 내 문제가 뭔지 알 것 같아. 나는 그 순간 어떻게 해결할 수 있을지 생각하지 않는다.
자바 스크립트
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
};
그것은 단지 데이터베이스의 첫 행을 반환 내가
console.log(result.phonesArray.device);
을 실행하면 순간 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);
?>
,하지만 난 경우 thi와 같은 for 루프에서 실행하십시오. s
for (var i = 0; i < arrayLength; i++) {
console.log(result.phonesArray.device[i]);
}
첫 번째 행의 단일 문자를 반환합니다. 예를 들어 첫 번째 행은 iPhone이고 위의 명령은 각 문자를 반복하여 개별 객체로 기록합니다.
device, device1, device2, device3, device4와 같은 별도의 배열 객체로 반환 된 각 행을 저장해야 할 필요가 있다고 생각합니다. 매번 장치 배열 이름을 저장하고 결과를 1 회만 반환하기 때문입니다.
도움이 될 것입니다.
콘솔의 로그 폰 배열 길이는 정의되지 않은 값을 반환하지만 콘솔에서 phonesArray.device.length를 로그하는 경우 반환되는 첫 번째 행의 문자 수를 반환합니다. 예를 들어, 첫 번째 행은 6 문자를 포함하는 iPhone이기 때문에 6을 반환합니다. –
따라서 phonesArray는 실제로 배열이 아닙니다. 서버에서 얻은 데이터를 검사하기 위해'console.log (result)'를 시도 했습니까? – megaflop