第二次ajax呼叫无法正常工作

时间:2014-12-30 12:38:13

标签: html ajax highcharts

这是我的页面代码,当我第一次点击按钮工作时:

我看到了一些问题,但我无法解决我的问题!

  <html>
            <head>
            <title>tsee</title>
    <script src="jquery.js" type="text/javascript"></script>
    <script>
        $(document).ready(function () {

            $("#btn").click(function () {
                $.ajax({
                    URL: "../../generate", //this read from a servlet
                    type: "get",

                    data:{
                        id:120
                    },

                    cache: false,
                    complete: function () { alert('farshid') },
                    success: function (data) {
                        $('#result').html(data);
                    },
                    error: function () {
                        alert('Error')
                    }


                })

            })
        });
    </script>
</head>
<body>
    <input type="button" id="btn" value="Ajax Request" />
    <div id="result">

    </div>
</body>
</html>

当我点击按钮时,我的结果加载到div(在这个div中绘制一个图表,因为避免使用我在此处写的大量代码)以及第二次点击“不工作”时。

我该如何解决这个问题呢? 这是用于更好地理解问题的视频。(video from my run enviroment

3 个答案:

答案 0 :(得分:1)

我认为您可以尝试.on('click',function(){//您的代码})而不是简单的.click函数。

答案 1 :(得分:0)

在查看您的视频和jsfiddle后,问题与按钮无关。

如果您打开了控制台,您会看到在设置HighCharts插件的选项时出现问题。

您尝试将颜色从平面更改为渐变,但每次尝试绘制图表时都会运行此代码。

此代码假定初始颜色为十六进制值,但第二次运行它时不是十六进制(因为您在第一次运行时更改了它们),这会导致插件崩溃并且停止执行(因此它永远不会到达绘制图表的部分

查看有问题的演示:http://jsfiddle.net/dgr2ky4h/


您需要从该功能中删除HighChart颜色设置,并且只在加载页面时运行一次。

参见工作演示:http://jsfiddle.net/dgr2ky4h/1/

请从成功方法中删除以下代码

Highcharts.getOptions().colors = Highcharts.map(
    Highcharts.getOptions().colors,

    function (color) {
        console.log(color);
        return {
            radialGradient: {
                cx: 0.5,
                cy: 0.3,
                r: 0.7
            },
            stops: [
                [0, color],
                [
                1,
                Highcharts.Color(color)
                    .brighten(-0.3)
                    .get('rgb')] // darken
                ]
        };

只运行一次成功..

<script>
    $(function(){
    Highcharts.getOptions().colors = Highcharts.map(
        Highcharts.getOptions().colors,

            function (color) {
                console.log(color);
                return {
                    radialGradient: {
                        cx: 0.5,
                        cy: 0.3,
                        r: 0.7
                    },
                    stops: [
                        [0, color],
                        [1, Highcharts.Color(color)
                            .brighten(-0.3)
                            .get('rgb')] // darken
                        ]
                };    
          });
    });
</script>

答案 2 :(得分:-1)

可能是一个具有约束力的问题...... .click会在您点击时多次将事件绑定到按钮。尝试 使用$(&#34; element&#34;)。on(&#34; click&#34;,function(){do stuff here});

或解除绑定后执行东西点击按钮...

错误答案......道歉