当前位置: 首页 > 面试题库 >

ajax响应后未更新值

扶杜吟
2023-03-14
问题内容

我通过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值未更新。


问题答案:

那是预期的行为。将您的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>


 类似资料:
  • 问题内容: 我正在尝试使用来自ajax html响应的内容更新div。我相信我的语法正确,但是div内容已替换为整个HTML页面响应,而不仅仅是html响应中选择的div。我究竟做错了什么? 问题答案: 您正在设置HTML格式的内容,然后将其替换为本身,这没有多大意义? 我猜你真正在哪里寻找返回的数据,然后用ajax调用中的html用html 更新DOM中的元素:

  • 我有一个JSF页面,其中有一个具有ajax=true的p:命令按钮,并在单击时呈现一个包装在p: outputGroup中的p:面板。当单击此按钮时,action方法将在ManagedBean中将show CreateUser值设置为true,这用于呈现面板。这工作正常——单击按钮后面板会正确呈现。在p:面板内还有另一个p:命令按钮。这个命令按钮不起作用,因为当我单击它时什么都不会发生。永远不会调

  • 问题内容: 当我警告jsonServerResponse函数返回的值时,尽管从process.php页面返回了JSON,但其值未定义。 我知道问题是异步请求完成之前发出的警报功能,但是我不确定如何解决此问题。任何建议都非常感激:) 问题答案: 好的,我是从其他帖子中弄清楚的。结果可以在成功回调中处理,也可以添加本身是回调函数的参数并将ajax请求的结果应用于回调。 还有gdoron,您所询问的那一

  • 有什么想法吗?没有JS库。 编辑:我做了几次回拨尝试。老实说,我很难理解他们。下面是我的最后一次尝试:

  • 问题内容: 我有这段代码,我看不出问题的根源在哪里,我在控制器的chrome控制台中没有收到任何错误: 并正确加载到div加载的东西中; 控制台中的newMsgs会按照应有的方式进行解析; 我有它适用于其他页面,但似乎我错过了这个页面上的东西。我有标签: 执行此命令时,我在控制台中得到“未定义”: 问题答案: 忽略我在评论中指出的其他体系结构问题,真正的问题是您使用的是而不是Angular的。当您

  • 我有一个图表组件,它将在第一次单击onSubmit时更新,当我输入数据到表单中时,但一次,但当我再次输入数据时,它需要2次单击,以便图表更新。我有一个DataVars组件,它包含表单,将输入添加到道具,然后呈现图表组件宪章 我试图在setState之后触发控制台日志命令,但仍然遇到同样的问题。是否有一种方法可以只在国家更新时呈现宪章组件,而不是异步地呈现? 谢谢你的意见。