为什么$ .ajax()会导致网页回发两次?

时间:2014-07-24 17:44:33

标签: javascript jquery ajax

有谁能告诉我为什么这个$ .ajax()导致网页两次回发?是不是只想开火一次?

这是我在Visual Studio中调试时看到的,它导致服务器端脚本运行两次。我正在使用JQuery 2.0.0版。

ThrobblerAnimationBegin()函数显示处理图标动画,让最终用户知道网页正在忙于执行脚本。 @ {}括号是服务器端脚本,这是我通过使用调试断点来判断何时对服务器端后端进行回发的方式。

...谢谢

@{
    string foo = "Me Me Me";
    foo += ", fee fee fee";
}<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <title>BookItOut - A New Dawn In Auto Pricing"</title>
        <script type="text/javascript" src="~/Member/Scripts/jquery-v2.0.3/jquery-v2.0.3.min.js"></script>
        <script type="text/javascript">
            function ThrobblerAnimationBegin() {
                return $.ajax();
            }
            function ThrobblerAnimationEnd() {
            }
            $(document).ready(function () {
                function DrawVehicleCostPerDays() {
                    var $deferred = $.Deferred();  //$.Deferred.done() --> to allow ayschronous sleep/delay until this current function() is finish before running done() afterward to continue. [[http://stackoverflow.com/questions/12116505/wait-till-a-function-is-finished-until-running-another-function]]... 

                    $deferred.resolve();
                    return $deferred;
                }

                //Load the script...
                ThrobblerAnimationBegin().done(function () {
                    //alert("done");
                    DrawVehicleCostPerDays(
                        ).done(function () { ThrobblerAnimationEnd(); /*alert('success');*/ }
                        ).fail(function () { ThrobblerAnimationEnd(); /*alert('failed');*/ });
                });
            });
        </script>
    </head>
    <body>

    </body>
</html>

根据请求编辑以下是Firefox Firebug的快照。

enter image description here

1 个答案:

答案 0 :(得分:2)

你的ajax 两次射击。相反,你看到的是初始页面加载(你计算的第一个ajax请求),然后是ajax请求(你计算的第二个)。由于您未在.ajax()调用中指定网址,因此它向同一网页发出了请求,这可能让您感到困惑。

您应该阅读.ajax() documentation,了解如何使用它的简单示例。