Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ajax在调用页面完成之前进入Success_Php_Ajax_Jquery - Fatal编程技术网

Php ajax在调用页面完成之前进入Success

Php ajax在调用页面完成之前进入Success,php,ajax,jquery,Php,Ajax,Jquery,我有以下代码: <script type="text/javascript"> $(function(){ $("#AddMaps").submit(function(){ var $form = $('#AddMaps'); $.ajax({ type: 'POST', url: $form.attr( 'action' ),

我有以下代码:

<script type="text/javascript">

        $(function(){
        $("#AddMaps").submit(function(){

            var $form = $('#AddMaps');

            $.ajax({
                type: 'POST',
                url: $form.attr( 'action' ),
                data: $form.serialize(),
                dataType: "json",
                beforeSend:function(){
                    // Set up Loading Image and disable submit button
                    $('#ajax-panel').html('<div class="loading"><img src="loader.gif" alt="Loading..." /></div>');
                },
                success:function(data){
                    // Successful Request; do something
                    $('#ajax-panel').empty();
                    if (data.response != "Success"){
                        $('#ajax-panel').append('Error Occurred' + data.response);
                    }
                    else {
                        $('#ajax-panel').append('File(s) Uploaded');
                    }
                },
                error:function(){
                    // Failed Request; Freak out
                    $('#ajax-panel').html('<p class="error"><strong>Oops!</strong> Try that again in a few moments.</p>');
                }
            });
        });
        });



        </script>

        <form id="AddMaps" action="test_multiple.php">
            <fieldset>
            <label for="server">Select a Server:</label>
            <select name="server" id="server">
        <option value="1">Server 1</option>
        <option value="2">Server 2</option>
        <option value="3">Server 3</option>
            </select>
            </fieldset>
            <input name="submit" type="submit" id="submit" value="Upload">
            <div id="ajax-panel"></div>
        </form>
我遇到的问题是,ajax调用在test_multiple.php调用完成之前很久就进入了success函数。test_multiple正在做大量的后端工作,如果我直接调用它,页面加载大约需要15秒。使用这个,它报告它立即完成,即使我可以看到后端的工作还没有完成

为什么它会马上进入成功?我如何阻止它这样做


此外,Firebug正在报告一个中止的POST请求以测试多个,但一个成功的GET请求以测试多个。

这可能是因为您的表单以正常方式提交。您需要在提交处理程序的末尾返回false,以防止表单重定向到指定的“操作”,从而允许XHR请求完成

此外,Firebug报告了 已中止测试多个单元的POST请求 但是一个成功的GET请求 多次测试


标记中的表单标记没有“method”属性集,因此默认为GET。这是您的表格以正常方式提交的证据。中止的POST可能是因为在服务器收到正常HTTP get请求并开始发送输出之前,XHR请求没有机会完成。

这是文件上载吗?。。。据我所知,如果没有flash的帮助,文件上传无法通过ajax完成……好吧,如果您创建一个隐藏的iframe并将表单提交给它,它可以。include complete:functionXMLHttpRequest,textStatus{$'ajax-panel'.append'Request complete';}但我认为它只是返回了一个失败的请求。您可以检查successdata的第二个参数textStatus和XMLHttpRequest的状态,还可以检查request对象以获取有关请求的更多数据。这不是上载,而是在后端的服务器之间传输一组文件。但是,用户的计算机没有发出任何信息。它正在运行,只是在完成传输之前调用了success函数。我在submit处理程序的末尾添加了return false,但现在它跳转到错误处理程序。调用脚本仍然在后端成功地完成了检查,但JQuery说它没有完成。我还添加了method=POST d'oh!。Firebug仍然显示此POST请求已中止,但正如预期的那样,它不会恢复到GET。如上所述,请求确实完成了。我接受了这个答案,因为它回答了我为什么要输入Jquery的成功方法的问题。我将打开一个关于Firebug和被终止帖子的新问题。谢谢你。