Проблема с рисованием Рафаэля и вызовом Ajax

#javascript #jquery #ajax #raphael

#javascript #jquery #ajax #рафаэль

Вопрос:

пойте Raphel.js и jQuery Ajax Я пытаюсь загрузить несколько точек (кругов) на карте в этом [Demo] [1] У меня есть вызов PHP-файла econo.php что похоже на :

 <?PHP
include 'conconfig.php';
$con = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$query = "SELECT x, y  FROM  econo WHERE c_5000=1";
$results = $con->query($query);
$return = array();
if($results) {
while($row = $results->fetch_assoc()) {
    $return[] = array((float)$row['x'],(float)$row['y']);
   }
}
$con->close();
echo json_encode($return);
?>
  

и возвращает массив X и Y в [здесь][2]
Все в порядке, когда я добавил те же координаты в код (жестко закодированный), например

 var coords = [[472.428818,542.403733],[498.605015,549.8196469],[466.124603,560.647791],[474.850002,564.3784961],[478.276206,570.2475322],533.166903,632.3917999]]
  

но через Ajax с помощью этого метода

 $.ajax({
    type:"POST",
    url:"assets/econo.php",
    data:data,
    success:function(html) {
    coords = html;
    console.log(coords);
    }
    });
  

Я получаю длинный список ошибок на консоли как:

 Error: Invalid value for <circle> attribute cx="[" raphael-min.js:10
Error: Invalid value for <circle> attribute cx="." raphael-min.js:10
Error: Invalid value for <circle> attribute cx="," raphael-min.js:10
Error: Invalid value for <circle> attribute cx="." raphael-min.js:10
Error: Invalid value for <circle> attribute cx="]" .......
  

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

Ответ №1:

Вы выводите JSON, но он не анализируется на стороне клиента. Он обрабатывается как необработанная строка. Добавьте a dataType , чтобы сообщить jQuery проанализировать ответ как JSON. Теперь вы можете предположить, что аргумент, переданный функции успеха, является вашим массивом JavaScript, декодированным из JSON.

 $.ajax({
    type:"POST",
    url:"assets/econo.php",
    data:data,
    dataType : 'json', // <-- here
    success:function(data) {
        coords = data;
        console.log(coords);
    }
});
  

Комментарии:

1. Спасибо MrCode, теперь он работает, не могли бы вы также сообщить мне, почему я не могу передавать данные из браузера на сервер? Я имею в виду, что причина, по которой я удалил это, заключалась в том, что я не могу запрашивать базу данных на основе выбора пользователя

2. Передача данных на сервер не должна работать без проблем. Проверьте содержимое data и добавьте некоторый код в PHP, чтобы собрать его.