Ajax帖子执行了两次并加起来

时间:2014-07-30 21:23:34

标签: ajax function

我遇到了ajax的问题​​,这里有几个用户也遇到过,但是建议的解决方案似乎对我的情况不起作用。

在我的index.php文件中,我有:

<pre>
<script>
function ButtonManager()
    {
        $( "button" ).click(function() 
            {    
                var context = $(this).attr('type');
                var page_type = $(this).attr('page');
                var referrer = $(this).attr('referrer');
                var form_type = $(this).attr('form');
                var object_id = $(this).attr('object');                                 
                var postData = 'page_type='+page_type+'&form_type='+form_type+'&referrer='+referrer+'&id='+object_id;




                $( '#indicator' ).css( "display", "block" ); 

                if (context == 'post_form')
                    {
                        var formData = $('#submit_content').serialize();
                        postData = postData+'&context=post_form&'+formData;
                    }

                if ((context == 'load_form') || (context == 'filter_form'))
                    {
                        postData = postData +'&context=load_form';
                        if (context == 'filter_form')
                            {   
                                var filter1 = $('select[name=filter1]').val();
                                var filter2 = $('select[name=filter2]').val();
                                var filter3 = $('select[name=filter3]').val();
                                postData = postData + '&filter1='+filter1+'&filter2='+filter2+'&filter3='+filter3;
                            }
                    }   


                $.ajax
                    ({
                        type: 'POST',
                        url: 'php/sl.php',
                        data: postData,
                        cache: false, 
                        async: false,
                        dataType: 'html', 
                        success: function(result) 
                            {   
                                ManageLayer(form_type+'_content');
                                $('#'+form_type+'_content').html(result);
                                $( '#indicator' ).css( "display", "none" );                                             
                            },
                        error: function(XMLHttpRequest, textStatus, errorThrown) 
                            {
                                alert(XMLHttpRequest.status);
                                alert(XMLHttpRequest.responseText);
                                $( '#indicator' ).css( "display", "none" ); 
                            },

                    }); 

            });



    }
</script>
<button type="load_form" page="home" referrer="navigation" form="edit" object="">test</button>
</pre>

单击测试按钮时,脚本会调用sl.php来检索其中包含其他按钮的html。

在我从我添加的服务器输出的输出中:

<pre>
<script>
var myvar=ButtonManager();
</script>
<button type="post_form" page="home" referrer="navigation" form="edit" object="">test2</button>
</pre>

ButtonManager函数的目标是在一个函数中管理我的所有按钮,因此它需要在任何地方都可用/已知(在index.php中加载它以及我可以从sl.php获得的所有输出)。

我添加了var myvar = ButtonManager()行,因为这是我找到的唯一方法,以确保服务器输出知道该函数。缺点是即使我没有点击test2按钮,该函数也会被执行多次而不是一次。

因此,我正在寻找一种方法来阻止我的函数被多次执行,或者另外一种方法是让函数在任何地方都可用。

我不知道什么方法会是最好的,我是一个有趣的休闲开发者编程,javascript / ajax不是我认为最好的语言。

由于 劳伦

1 个答案:

答案 0 :(得分:0)

我从另一个论坛得到了答案,但我想分享它以防其他人遇到同样的问题。

要使用的代码应该是这样的:

<pre>
$( document ).on("click", "button", function() {

</pre>

它使该函数可用于尚不存在的对象。