Значения не обновляются после ответа ajax

Я посылаю некоторые данные формы через ajax в php-скрипт на той же странице. PHP должен обрабатывать данные и показывать результаты на одной странице.

Я использую этот синтаксис для AJAX:

$.ajax
({
    type: "POST",
    url: "",
    data: $("form").serialize(),
    success: function(result)
    {
        updatechart();
       console.log(result);
    }
});  

Я в основном пытаюсь обновить некоторые значения в диаграмме на основе данных, введенных в форму и после обработки сценарием php. Я получаю весь источник страницы, когда я делаю console.log(result); и значения обновляются в моей консоли после этого, но диаграмма не обновляется. Когда я просматриваю исходную страницу, значения остаются прежними. Что я должен делать?

    function updatechart() {
        var json=<?php echo json_encode($GLOBALS['json']); ?>;
        var direct=json['direct'];
        var total=json['total'];
        var referred=total-direct;
        var aid=new Array();
        var count=new Array();
        for(var i=0;i<json['aid'].length;i++) {
            aid[i]=json['aid'][i];
            count[i]=json['count'][i];
        }
    var series = [{
                name : "Referred",
                data: [referred]
            }, {
                name: "Direct",
                data: [direct]
            }];
       for(var i=0; i<aid.length;i++) {
            series.push({
                name: 'AID-'+[aid[i]],
                data: [count[i]]
            })
        }
    var options = {
        chart: {
            renderTo: 'container',
            type: 'column'
        },
        title: {
            text: 'User Source Chart'
        },
        xAxis: {
            categories: ['Users']
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Total users'
            }
        },
        tooltip: {
            pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.percentage:.0f}%)<br/>',
            shared: true
        },
        plotOptions: {
            column: {
                stacking: 'percent'
            }
        },
            series: series
    };
    chart = new Highcharts.Chart(options); 
}

Это мой код updatechart(). Проблема в том, что значение json не обновляется.

2 ответа

Решение

Это ожидаемое поведение. Переместите вашу обработку PHP на другую страницу.

$.ajax
({
    type: "POST",
    url: "anotherphppage.php",
    data: $("form").serialize(),
    success: function(result)
    {
        updatechart(result);      
    }
}); 

Попробуйте это, и вы поймете, что я имею в виду:

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {

                $('#mybutt').click(function() {
                    $.ajax({
                        type: "POST",
                        url: "",
                        data: 'myVar=Hello',
                        success: function(data) {
                            alert(data);
                        }
                    });
                });
            }); //END $(document).ready()

        </script>
    </head>
<body>

    Try this:<br />
    <input type="button" id="mybutt" value="Click Me">

</body>
</html>

Пройти result в качестве параметра для updatechart()

$.ajax
({
    type: "POST",
    url: "",
    data: $("form").serialize(),
    success: function(result)
    {
        updatechart(result);      
    }
}); 

затем получить доступ к результатам через параметр.

function updatechart(result) {
//.......
//.......
console.log(result);
}

Надеюсь, вы пытаетесь что-то вроде этого.

Другие вопросы по тегам