Javascript 在Ajax响应中加载HTML
因此,当返回一个html页面作为ajax响应时,我正在处理这个奇怪的服务,它有一个表单,表单由页面中的一些脚本自动触发(因此,当您呈现页面时,将向您发送一个post请求)。我试图做的是加载我从响应中得到的这个页面 假设这是我的Ajax调用: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
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/“不,这应该只是一个终点,它可以正常工作。我得到了正确的答复。