Как назначить .post
вернуть данные переменной.активно я пытаюсь обновить high-chart. данные с высоким чатом в массиве.
JavaScript
$.post( "system/return_pages/counter.txt", function(data) {//return value data});
Выше .post
mathod дайте мне возвращаемое значение, это мой номер ценности посетителя. Мне нужно это значение в чатах. Но в реальном сценарии я попытался сделать глобальную переменную и назначить ее. Но когда я добавляю массив с высоким графиком чем нет никакого значения. Я показываю код с высокой графикой и с тем, что я сделал.
JavaScript
$(function () {
var chart;
var date = new Date();
var d = date.getDate();
var day = (d < 10) ? '0' + d : d;
var m = date.getMonth() + 1;
var month = (m < 10) ? '0' + m : m;
var yy = date.getYear();
var year = (yy < 1000) ? yy + 1900 : yy;
var count = "";
$.post( "system/return_pages/counter.txt", function( value ) { count =data; //count value 35});
var date = day + "/" + month + "/" + year;
$(document).ready(function() {
Highcharts.setOptions({
colors: ['#32353A']
});
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'column',
margin: [ 50, 30, 80, 60]
},
title: {
text: 'Visits this month'
},
xAxis: {
categories: [
date
],
labels: {
rotation: -45,
align: 'right',
style: {
fontSize: '9px',
fontFamily: 'Tahoma, Verdana, sans-serif'
}
}
},
yAxis: {
min: 0,
title: {
text: 'Visits'
}
},
legend: {
enabled: false
},
tooltip: {
formatter: function() {
return '<b>'+ this.x +'</b><br/>'+
'Visits: '+ Highcharts.numberFormat(this.y, 0);
}
},
series: [{
name: 'Visits',
data: [count],
dataLabels: {
enabled: false,
rotation: 0,
color: '#F07E01',
align: 'right',
x: -3,
y: 20,
formatter: function() {
return this.y;
},
style: {
fontSize: '11px',
fontFamily: 'Verdana, sans-serif'
}
},
pointWidth: 20
}]
});
});
});
Результат высокой диаграммы null Я имею в виду счет переменной null каждый раз, когда я новичок в JavaScript. Я не знаю, в чем проблема в моем коде. Пожалуйста, помогите.
Это связано с тем, что AJAX является асинхронным - к моменту назначения этой переменной остальная часть кода уже выполняется, введите обратные вызовы. Вы можете передать функцию для запуска после завершения вашего запроса AJAX, эта функция должна содержать всю логику, которая должна быть выполнена.
$.post( "system/return_pages/counter.txt", function( value ) {
//value is only accessible in here
//Either do your logic in here, or pass "value" to another function
});
Короче говоря, положите всю свою логику высоких диаграмм в обратный вызов вашего запроса AJAX.
У вас есть варианты trhee (один плохой и два хороших):
(хороший) создать диаграмму внутри обратного вызова:
$.post( "system/return_pages/counter.txt", function( value ) {
count = data; //count value 35
chart = new Highcharts.Chart(options);
});
(хорошо) создать пустую диаграмму (сначала!), а в обновлении обратного вызова этой диаграммы:
chart = new Highcharts.Chart(options);
$.post( "system/return_pages/counter.txt", function( value ) {
count = data; //count value 35
chart.series[0].setData([count]);
});
Метод .post
является асинхронным (a
ajax
). Возвращаемое значение $.post является объектом jqXHR и не имеет ничего из базы данных в следующем коде.
В соответствующей заметке у вас может быть ошибка. я думаю
$.post( "system/return_pages/counter.txt", function( value ) { count =data; //count value 35});
следует вместо этого
$.post( "system/return_pages/counter.txt", function( data) { count =data; //count value 35});