2015-03-30 43 views
0

我在ajax load()之后启动一个函数,但是函数I贴心地调用了一个不起作用的函数。如何在load()之后启动ajaxstuff()ajax load()后的调用函数()

function ajaxstuff(data) { 
    $.ajax({ 
     type: "POST", 
     url: "do-it.php", 
     data: {data}, 
     success: function() { 
      console.log('I got this far'); // this doesn't work/isn't called 
     } 
    }); 
} 

function doit() { 
    $('form').submit(function(e) { 
     e.preventDefault(); 
     var formData = new FormData(this); 
     console.log('I got this far'); // this works 
     ajaxstuff(formData); 
    } 
} 

$('.popup-loader').click(function() { 
    $(this).append('<div class="popup"></div>'); 
    $('.popup').load('popup.php', function() { 
     doit(); // this works 
    } 
}); 
+1

在ajaxstuff方法,我只看到了成功的回调。尝试添加 错误:函数(xhr,textStatus,errorThrown){ }以查看是否收到任何错误。 – Vim 2015-03-30 21:07:27

+0

另外,我看到你正在发送FormData到ajax文章。设置,数据:数据, processData:false。 – Vim 2015-03-30 21:20:03

+0

也许开始阅读文档http://api.jquery.com/jquery.ajax/ 有没有与Ajax“负载”的情况下,你有成功,失败,总是 – iamwhitebox 2015-03-30 22:00:53

回答

-2

ajaxstuff函数中的语法错误。 data: {data},,大概应该是data: data,

此外,当你传递一个FORMDATA对象$阿贾克斯,你必须指定processData: falsecontentType: false

$.ajax({ 
    type: "POST", 
    url: "do-it.php", 
    data: data, 
    processData: false, 
    contentType: false, 
    success: function() { 
     console.log('I got this far'); 
    } 
}); 
-2

检查错误在控制台同样的,在你的AJAX添加一个async选项。其设置为FALSE(“设置异步为false,意味着你在调用语句来完成你的函数的下一条语句前可以调用”):

function ajaxstuff(data) { 
    $.ajax({ 
     async: false, 
     type: "POST", 
     url: "do-it.php", 
     data: data, 
     success: function(result) { 
      console.log(result); //check in your console for errors 
     } 
    }); 
} 
+1

这与“成功”模块没有触发无关 - 默认情况下为true。 – wahwahwah 2015-03-30 21:09:18

+0

'async:false'被描述为jQuery 1.8,他已经在使用成功回调。 – balzafin 2015-03-30 21:10:15