任何混合了 .ajax() 和 .load() 功能的函数

Any function with mixed functionality of .ajax() and .load()?

本文关键字:功能 函数 load ajax 混合 任何      更新时间:2023-09-26

.ajax(( 可以发送 post 请求并获取数据作为回报,而 .load(( 可以获取渲染页面中的任何元素。如何在提交时(异步(创建一个表单,而不是取回一些数据,应该获取渲染页面的页面元素,如果有正常提交而不是 ajax 提交,将生成该元素?

我不想为 xhr 单独编写视图(Django(,正常请求。因此,当我通过ajax提交表单时,我不想劫持默认操作,而只想获取呈现的帖子提交页面的某些元素,而不是实际重定向到该帖子提交页面,如果不是xhr请求,就会发生这种情况。

更新

如果您提供要作为对象而不是字符串发送的数据,load将执行POST而不是GET。从文档中:

请求方法

如果数据作为对象提供,则使用 POST 方法;否则,假定为 GET。

所以:

$("#target").load("/path/to/resource selector_for_relevant_elements", {});

..应将loadGET转换为POST。当然,您可以将{}替换为要发送的参数。

<小时 />

原答案

您可以直接使用 ajax 执行POST,然后自己处理返回的 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函数所做的。您可能需要查看load的来源(当然,该行号会腐烂,但文件名不太可能更改(,以查看是否需要复制其他技巧。