.ajax()可以发送post请求并获取数据,而.load()可以获取呈现页面中的任何元素。如何在提交(异步)而不是返回某些数据时创建表单应该获取在正常提交而不是提交ajax时生成的呈现页面的页面元素?
我不想分别为xhr,普通请求写视图(Django)。所以,当我通过ajax提交表单时,我不想劫持默认操作,但只想获取呈现的帖子提交页面的一些元素,而不是实际被重定向到那个帖子提交页面,这本来就不会是xhr请求。
答案 0 :(得分:2)
<强>更新强>:
如果您提供要作为对象而不是字符串发送的数据, load
将执行POST
而不是GET
。来自文档:
请求方法
如果数据作为对象提供,则使用POST方法;否则,假设GET。
所以:
$("#target").load("/path/to/resource selector_for_relevant_elements", {});
..应将load
从GET
转换为POST
。当然,您可以使用要发送的参数替换{}
。
原始回答:
您可以直接使用POST
执行ajax
,然后自行处理返回的HTML。例如,要转为load
:
$("#target").load("/path/to/resource selector_for_relevant_elements");
..进入POST
:
$.ajax({
url: "/path/to/resource",
method: "POST",
dataType: "html",
success: function(html) {
// Build the elemnts of the result in a disconnected document
var page = $("<div>").append(html); // See note below
// Find the relevant elements and put them in target
$("#target").html(page.find("selector_for_relevant_elements"));
}
});
我已经完成了包装器div
,因为这就是jQuery的load
函数所做的事情。您可能希望查看source for load
(当然,该行号会腐烂,但文件名不太可能更改)以查看是否还有其他需要复制的技巧。< / p>