具有.ajax()和.load()的混合功能的任何函数?

时间:2012-02-19 12:22:10

标签: javascript ajax jquery

.ajax()可以发送post请求并获取数据,而.load()可以获取呈现页面中的任何元素。如何在提交(异步)而不是返回某些数据时创建表单应该获取在正常提交而不是提交ajax时生成的呈现页面的页面元素?

我不想分别为xhr,普通请求写视图(Django)。所以,当我通过ajax提交表单时,我不想劫持默认操作,但只想获取呈现的帖子提交页面的一些元素,而不是实际被重定向到那个帖子提交页面,这本来就不会是xhr请求。

1 个答案:

答案 0 :(得分:2)

<强>更新

如果您提供要作为对象而不是字符串发送的数据,

load将执行POST而不是GET。来自文档:

  

请求方法

     

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

所以:

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

..应将loadGET转换为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>