JQuery ajax表单提交在调试时有效但不是没有

时间:2011-09-09 09:53:07

标签: forms jquery-plugins jquery

我有一个使用ajax加载到页面的表单。然后使用malsup jquery表单插件提交表单。

奇怪的是,当我向此方法添加一个firebug断点行或警报时,该表单有效,但是当我删除警报或调试时,提交代码永远不会运行。

function addAttachment(attachmentType, path){
var typeSplit = attachmentType.split(":");
if(path == null){
    path = "";
}
var url = "/add/" + typeSplit[0] + "/" + typeSplit[1];                
addOverlayDivs(); //adds div to load the form into
// load the form
var snippet = $('#overlay').load(url, function(response, status, xhr) {
    if (status == "error") {
        var msg = "Sorry but there was an error: ";
        $("#overlay").html(msg + xhr.status + " " + xhr.statusText);
    }
});
var prefix = typeSplit[0];
var type = typeSplit[1];
//this alert will cause the submit form to work
alert("bind overlay called");//if I comment this out the formsubmit doesn't work

var options = { 
        target: null,   // target element(s) to be updated with server response 
        beforeSubmit: showRequest,
        success: showResponse,
        url:  "/add/" + prefix + "/" + type, 
        type:      "POST", 
        dataType:  "json" 
};  
$('#overlayForm').submit(function() { 
    $(this).ajaxSubmit(options);
    // always return false to prevent standard browser submit and page navigation 
    return false; 
});}

我尝试过使用和不使用$(文档).ready,这没有什么区别。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可能需要在加载完成后调用函数的后续部分,试试这个

 $(document).ready(function(){ 

      function addAttachment(attachmentType, path){
        var typeSplit = attachmentType.split(":");
        if(path == null){
            path = "";
        }
        var url = "/add/" + typeSplit[0] + "/" + typeSplit[1];                
        addOverlayDivs(); //adds div to load the form into
        // load the form
        var snippet = $('#overlay').load(url, function(response, status, xhr) {
            if (status == "error") {
                var msg = "Sorry but there was an error: ";
                $("#overlay").html(msg + xhr.status + " " + xhr.statusText);

            }
                   Dowork();//function call after load complete
        });
    }


    function Dowork(){
          var prefix = typeSplit[0];
        var type = typeSplit[1];
        //this alert will cause the submit form to work


        var options = { 
                target: null,   // target element(s) to be updated with server response 
                beforeSubmit: showRequest,
                success: showResponse,
                url:  "/add/" + prefix + "/" + type, 
                type:      "POST", 
                dataType:  "json" 
        };  
        $('#overlayForm').submit(function() { 
            $(this).ajaxSubmit(options);
            // always return false to prevent standard browser submit and page navigation 
            return false; 
        });
    }
    });