jQuery:处理程序没有定义?

时间:2011-08-02 08:29:26

标签: jquery ajax

来到javascript时我是超级菜鸟,为什么click()不起作用?此代码将表单数据提交到php脚本并将回复加载到div中。你可以在这里看到它的动作:http://shorelinerenovations.com

jQuery(document).ready(function(){
   var ajax_load = "<img class='loading' src='http://shorelinerenovations.com/wp-content/themes/Narm/images/load.gif' alt='loading...' />";
   var loadUrl = "http://shorelinerenovations.com/wp-content/themes/Narm/optin.php";
   jQuery('form#optin-form input#frm_submit').click(function(){
       jQuery("#submit-result").html(ajax_load);
       jQuery.post(
           loadUrl,
           jQuery("#optin-form").serialize(),
           function(responseText){
               jQuery("#submit-result").html(responseText);
           },
           "html"
        );
   });
});

2 个答案:

答案 0 :(得分:3)

您必须阻止默认操作,即提交表单:

jQuery('#optin-form').submit(function(event){
    event.preventDefault();
    // other stuff
});

仅仅因为您发出Ajax请求并不意味着浏览器不会以“正常”方式提交表单。

最好将事件处理程序分配给表单的submit事件。用户可以在不单击按钮的情况下提交表单。

答案 1 :(得分:1)

Jilseego,当Firebug显示错误时,Firebug图标旁边应该有一个红叉。单击它,这将带您到代码中错误的位置。

页面可能正在重新加载,因为如果存在JavaScript错误,浏览器根本不会执行该脚本。