Javascript 是否有混合了.ajax()和.load()功能的函数?

Javascript 是否有混合了.ajax()和.load()功能的函数?,javascript,ajax,jquery,Javascript,Ajax,Jquery,.ajax()可以发送post请求并获取数据,而as.load()可以获取呈现页面中的任何元素。如何在提交时(异步)创建表单,而不是返回一些数据,这些数据应该获得呈现页面的页面元素,如果是正常提交而不是ajax提交,则会生成该页面元素 我不想分别为xhr和普通请求编写视图(Django)。因此,当我通过ajax提交表单时,我不想劫持默认操作,只想获取呈现的提交后页面的某些元素,而不是实际重定向到提交后页面,如果不是xhr请求,就会发生这种情况。更新: 如果将数据作为对象而不是字符串发送,则将执行

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


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

更新

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

请求方法

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

因此:

…应将
load
GET
转换为
POST
。当然,您需要用要发送的参数替换
{}


原始答案

您可以使用
ajax
直接执行
POST
,然后自己处理返回的HTML。例如,要打开此
加载

$("#target").load("/path/to/resource selector_for_relevant_elements");
..放入
帖子中

$.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"));
    }
});
$.ajax({
url:“/path/to/resource”,
方法:“张贴”,
数据类型:“html”,
成功:函数(html){
//在断开连接的文档中构建结果的元素
var page=$(“”)。追加(html);//参见下面的注释
//找到相关元素并将其放入目标中
$(“#target”).html(page.find(“与#u相关的_元素的选择器”);
}
});

我已经完成了包装器
div
,因为jQuery的
load
函数就是这样做的。您可能希望查看(行号当然会腐烂,但文件名不太可能更改)以查看是否需要复制其他技巧。

谢谢。这解决了一个问题,另一个问题是如何让“提交”按钮执行其默认操作,并将呈现页面的元素放入现有页面而不转到该页面。这在js中似乎是不可能的。@KamalReddy:如果您允许默认操作,您的页面将被结果替换。但是使用表单的值创建对象很容易。从一个空白对象
{}
开始,然后按文档顺序遍历表单字段,跳过任何
禁用的
字段,并使用每个字段的名称及其值向对象添加道具。仅当选中了复选框或单选按钮时才包括它们
。如果看到以前看到的字段名(因此属性已设置),请将属性值转换为数组,并将新值推送到数组中<代码>文件
字段是唯一真正的问题。
$.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"));
    }
});