Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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 在Ajax响应中加载HTML_Javascript_Jquery_Html_Ajax_Forms - Fatal编程技术网

Javascript 在Ajax响应中加载HTML

Javascript 在Ajax响应中加载HTML,javascript,jquery,html,ajax,forms,Javascript,Jquery,Html,Ajax,Forms,因此,当返回一个html页面作为ajax响应时,我正在处理这个奇怪的服务,它有一个表单,表单由页面中的一些脚本自动触发(因此,当您呈现页面时,将向您发送一个post请求)。我试图做的是加载我从响应中得到的这个页面 假设这是我的Ajax调用: var ajax_call_test = function() { var formData = new FormData($('#documentForm')[0]); console.log("doc form: " + formData

因此,当返回一个html页面作为ajax响应时,我正在处理这个奇怪的服务,它有一个表单,表单由页面中的一些脚本自动触发(因此,当您呈现页面时,将向您发送一个post请求)。我试图做的是加载我从响应中得到的这个页面

假设这是我的Ajax调用:

var ajax_call_test = function() {
    var formData = new FormData($('#documentForm')[0]);
    console.log("doc form: " + formData);

    $.ajaxSetup({
        xhrFields: {
            withCredentials: true
        }
    });

    $.ajax("/documents/upload/", {
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        cache: false,
        async: false,
        dataType: 'html',
        success: function(html){
            // ?
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log("failed: " + errorThrown);
        }
    });
}
因此,我尝试使用
.html
将响应设置为隐藏的
。它设置html,但从不触发表单。我猜当我使用
.html
时,该页面中的javascript没有加载


我也不能使用
jQuery.parseHTML()
,因为我使用的库版本不支持该功能。知道如何处理响应吗?

当您将新html加载到DOM中时。javascript对此一无所知

我必须重新调用javascript才能使用新的DOM

假设我有一些点击事件

$(function(){invokeClicks()}) // onload call

function invokeSomeAction(){
    $("selector").off(); // disable previous events from old html
    $("selector").on("event", function(){
        // handle event
    })
}

function invokeClicks(){
    invokeSomeAction();
    // ... etc
}
因此,当这个JS加载时,调用
invokeClicks()
方法

现在,如果我通过
$.ajax()
调用替换HTML,我所要做的就是再次调用
invokeClicks()
来清除旧事件,现在新的HTML将与javascript一起工作

$.ajax({
    url: "somepath",
    data: {id: 1},
    method: "GET", 
    success: function(html){
         $("container_selector").html(html);
         invokeClicks(); // reinit
    },
})

当您将新的html加载到DOM中时。javascript对此一无所知

我必须重新调用javascript才能使用新的DOM

假设我有一些点击事件

$(function(){invokeClicks()}) // onload call

function invokeSomeAction(){
    $("selector").off(); // disable previous events from old html
    $("selector").on("event", function(){
        // handle event
    })
}

function invokeClicks(){
    invokeSomeAction();
    // ... etc
}
因此,当这个JS加载时,调用
invokeClicks()
方法

现在,如果我通过
$.ajax()
调用替换HTML,我所要做的就是再次调用
invokeClicks()
来清除旧事件,现在新的HTML将与javascript一起工作

$.ajax({
    url: "somepath",
    data: {id: 1},
    method: "GET", 
    success: function(html){
         $("container_selector").html(html);
         invokeClicks(); // reinit
    },
})

“/documents/upload/”不,这应该只是一个终点,它可以正常工作。我得到了正确的回复。”/documents/upload/“不,这应该只是一个终点,它可以正常工作。我得到了正确的答复。