Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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
Javascript jqueryajax发送两个请求_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jqueryajax发送两个请求

Javascript jqueryajax发送两个请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,jQueryAjax似乎正在发送两个请求。由于我使用的是基于时间的双因素身份验证方法,第二个请求失败,因此原始请求“失败” 第一个是post请求,这很好,但是还有GET请求,这不好 下面是我用来生成查询的javascript $('#form').live('submit', function(event) { var target = $('#ajax'); var url = '/ajax/user/authenticateLevel3'; $.ajax({

jQueryAjax似乎正在发送两个请求。由于我使用的是基于时间的双因素身份验证方法,第二个请求失败,因此原始请求“失败”

第一个是post请求,这很好,但是还有GET请求,这不好

下面是我用来生成查询的javascript

$('#form').live('submit', function(event) {
    var target = $('#ajax');
    var url = '/ajax/user/authenticateLevel3';
    $.ajax({
        type: "POST",
        url: url,
        data: $('#form').serialize(),
        dataType: 'json',
        success: function(data, status) {
            $.getJSON(url, function(data) {

                if (!data.resultCode) {
                $('#ajax').html($.base64.decode(data.html));
                $('#ajax').modal();
                } else {
                    location.reload();
                }

            });
        }
    });
    event.preventDefault();
});

你知道我如何解决这个问题吗?

这是因为你在做两个ajax调用(
.ajax
.getJSON

尝试执行此操作(使用文档事件委派而不是
.live
):

是一种用于从服务器检索JSON的AJAX方法,而不是用于处理另一种AJAX方法返回的数据。把它拿走

$('#form').live('submit', function(event) {
    var target = $('#ajax');
    var url = '/ajax/user/authenticateLevel3';
    $.ajax({
        type: "POST",
        url: url,
        data: $('#form').serialize(),
        dataType: 'json',
        success: function(data, status) {
            if (!data.resultCode) {
            $('#ajax').html($.base64.decode(data.html));
            $('#ajax').modal();
            } else {
                location.reload();
            }
        }
    });
    event.preventDefault();
});
由于您提到要切换到,语法如下:

$(parent).on('submit', '#form', function(event) {
    /*
     * ...
     */
});

其中,
parent
#表单

中最近的静态父元素,您将发送2个请求。一个带有.ajax,另一个带有.getJson


删除.getJson请求。由于没有向.ajax传递数据类型属性,jquery将尝试猜测响应类型。您还可以将数据类型指定为json以强制转换。对于这两个选项,成功回调的“data”参数应转换为javascript对象。

您确实看到您实际上发出了两个请求,对吗<代码>$。ajax是其中之一,
$。getJSON
是第二个。值得注意的是,该方法已经被弃用了很长一段时间。不要用它。@shmiddy,呃,嘿,是吗?我应该怎么做@nbrooks,我正在将内容移动到
.on()
。您应该能够打开
$.getJSON
回调的内容,它可能会工作。IE删除
$.getJSON(…
和关闭
})用于该块。投票关闭,因为太本地化。
$(parent).on('submit', '#form', function(event) {
    /*
     * ...
     */
});