JQuery AJAX формы отправки работает при отладке, но не без - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть форма, которая загружается на страницу с помощью ajax.Затем форма отправляется с помощью плагина jquery malsup.

Странно, форма работает, когда я добавляю в этот метод строку останова 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; 
});}

Я пробовал с и без использования $ (document) .ready, и это ничего не меняет.

Есть идеи?

1 Ответ

0 голосов
/ 09 сентября 2011

Может быть, вам понадобится вызвать более позднюю часть вашей функции после завершения загрузки, попробуйте это

 $(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; 
        });
    }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...