Это может быть очень простой проблемой, но я совершенно новичок в javascript и не могу понять.
Я работаю над созданием графика боке, который обновляет ColumnDataSource по щелчку. Внутри обратного вызова javascript я использую вызов ajax, а затем php для получения обновленного pandasdf с сервера, и большая часть пока работает хорошо.
Попробуйте передать pandas фрейм данных как json, я продолжаю терпеть неудачу. Я попробовал несколько ответов, опубликованных здесь, но все они как-то передают массив в виде строки.
Вот упрощенное воспроизведение проблемы.
submit. html отправляет форму, а затем принимает массив из ответ. php
<!DOCTYPE html>
<link rel="shortcut icon" href="favicon.ico">
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$("document").ready(function(){
$(".js-ajax-php-json").submit(function(){
var data1 = {
"action": "test"
};
data1 = $(this).serialize() + "&" + $.param(data1);
$.ajax({
type: "POST",
dataType: "json",
url: "response.php",
data: data1,
success: function(data) {
console.table(data)
$(".the-return").html(
"return: " + data["index"]
);
alert("Form submitted successfully.\nReturned json: " + data["index"]);
}
});
return false;
});
});
</script>
<form action="return.php" class="js-ajax-php-json" method="post" accept-charset="utf-8">
<input type="text" name="st_numbers" value="" placeholder="write something" />
</select>
<input type="submit" name="submit" value="Submit form" />
</form>
<div class="the-return">
[HTML is replaced when successful.]
</div>
</body>
</html>
ответ. php
<?php
\\ a call to server-side python code to calculate and print( df.reset_index().to_dict('list'))
\\ $query = $_SERVER['QUERY_STRING'];
\\ exec($python." server_side_calc.py ".$query, $return)
\\ what it is doing is essentially the same as;
echo json_encode(["{'index': [0, 1, 2, 3], 'p': [10, 20, 30, 50], 'init': [0.5178, 0.11115, 0.1903, 0.026], '24': [0.385, 0.028, 0.104, -0.0052]}"]);
?>
Эти программы читают pandas фрейм данных в виде строки "{'index': [0, 1, 2, 3], 'p': [10, 20, 30, 50], 'init': [0.5178, 0.11115, 0.1903, 0.026], '24': [0.385, 0.028, 0.104, -0.0052]}"
Я понятия не имею, где самые внешние блейты [] пошел и почему его нельзя распознать как массив.
Любые предложения приветствуются.
Спасибо за вашу помощь.
Юи