PHP массив для разделения файла JavaScript через AJAX

Я сделал простой файл php, который сохраняет данные из базы данных MySQL в 2 массива. Я пытаюсь отправить эти два массива в файл JS (который находится отдельно от файла HTML). Я пытаюсь выучить AJAX, но, похоже, я не делаю что-то правильное.

Не могли бы вы объяснить, что я делаю не так?

Мой php файл: get.php

<?php
define('DB_NAME', 'mouse');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_HOST', 'localhost');
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}else{
echo 'Successfuly connected to database :) <br/>';
}
$sql = "SELECT x, y FROM mousetest";
$result = mysqli_query($link, $sql);
$x_array = [];
$y_array = [];
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "x: " . $row["x"]. " - y: " . $row["y"]. "<br>";
array_push($x_array, $row["x"]);
array_push($y_array, $row["y"]);
}
} else {
echo "0 results";
}
echo json_encode($x_array);
echo "<br>";
echo json_encode($y_array);
mysqli_close($link);
$cd_answer = json_encode($x_array);
echo ($cd_answer);
?>

И это мой файл JS:

$(document).ready(function(){
$.ajax({
type: "GET",
url: "get.php",
dataType: "json",
data : {anything : 1},
success:function(data){
var x = jQuery.parseJSON(data); // parse the answer
x = eval(x);
console.log(x.length);
}
});
});

Я очень надеюсь, что вы понимаете, что я пытаюсь сделать. В чем проблема? Я действительно думал, что это должно сработать, поскольку я прошел через это несколько раз, чтобы не сказать больше …

1

Решение

Вы не можете использовать echo json_encode(...) дважды. Клиент ожидает один объект JSON, а не их серию.

Вы должны сделать каждый массив элементом содержащего массива, который вы затем возвращаете как JSON.

$result = array('x' => $x_array, 'y' => $y_array);
echo json_encode($result);

Тогда в коде jQuery вы будете использовать:

var x = data.x;
var y = data.y;

Кроме того, когда вы используете dataType: 'json'JQuery автоматически анализирует JSON, когда он устанавливает data, Ты не должен звонить jQuery.parseJSON() или же eval(),

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector