奇怪的JQuery $ .post()行为

时间:2013-01-08 09:56:25

标签: jquery .post

我有以下代码:

function check_email() {
    var email = $('#email').val();
    $.post(
        "inc/check.php", 
        { email: email },
        function(result) {
            if (result == 0) {
                // Do Stuff
            }
            else {
                // Do Stuff
            }
        }
    );
}

在开发环境中的浏览器中,这个测试很好。但是在具有相同浏览器的其他环境中,请求似乎没有触发。我通过以下方式对此进行了测试:

function check_email() {
    alert('test1');
    var email = $('#email').val();
    $.post(
        "inc/check.php", 
        { email: email }, 
        function(result) {
            alert('test2');
            if (result == 0) {
                // Do Stuff
            }
            else {
                // Do Stuff
            }
        }
    );
}

第一个test1警报会触发,但第二个警告test2则不会触发。请记住,这只适用于某些环境。有人有任何想法吗?

1 个答案:

答案 0 :(得分:3)

  

第一个test1警报触发但第二个警告test2没有触发。请记住,这只适用于某些环境。有人有任何想法吗?

因为在不起作用的环境中出现了问题,因此success处理程序不会被调用。

您可以通过

找出 出错的地方
  1. 查看浏览器的开发工具,特别是网络标签,

  2. 使用error处理程序并检查它为您提供的信息。

  3. 选项#2需要使用$.post重写$.ajax(它只是$.ajax的快捷方式/包装),如下所示:

    $.ajax({
        type:    'POST',
        url:     "inc/check.php",
        data:    {email: email},
        success: function(result) {
            alert('test2');
            if (result == 0) {
                // Do Stuff
            }
            else {
                // Do Stuff
            }
        },
        error:   function(jqXHR, status, errThrown) {
            // Look at what went wrong here
        }
    });
    

    作为旁注,alert - 样式调试效率非常低,并且在2013年不需要它。而是使用浏览器内置的调试器。设置断点并逐步执行代码。所有主流浏览器都内置了调试器,包括IE8及更高版本。 Firefox的内置版本仍然相当基础,但还有Firebug插件。 Chrome内置的工具非常出色,但同样,它们都或多或少地具有它们。如果您绝对必须在IE7或IE6上调试某些内容,甚至还有Visual Studio。