我遇到了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不是我认为最好的语言。
由于 劳伦
答案 0 :(得分:0)
我从另一个论坛得到了答案,但我想分享它以防其他人遇到同样的问题。
要使用的代码应该是这样的:
<pre>
$( document ).on("click", "button", function() {
</pre>
它使该函数可用于尚不存在的对象。