使用jQuery发送普通请求(非ajax请求)

11

是否有像 $.post、$.ajax 等 jQuery 方法,可以像正常表单提交一样工作。我知道 .submit() 方法需要一个表单元素,但我们能否在 jQuery 中发送一个没有表单元素的普通请求呢?


你的意思是不用 Ajax 吗?只需使用 <form action="blah"> 标签提交表单即可。 - Manse
3
为什么你会这样做?你能给我们一些背景吗?我不明白为什么你不使用ajax。 - Evan Davis
您可以通过将值分配给window.location.href来重定向页面。这将发出一个GET请求。 - Paul
1
你想在不刷新整个页面的情况下获取视图并将其放入你的页面中吗? - Patricia
1
你需要动态地完成这个任务吗,还是只是想要包含一个视图?听起来像是你想使用 @Html.Action(...) - Evan Davis
显示剩余2条评论
4个回答

24

您可以使用$.ajax()而无需表单进行提交。此外,为了使其像普通表单一样运行,请将async属性设置为false

$.ajax({
    url:   "/controller/action",
    data:  {'foo':'bar'},
    async: false
});

这将导致您被发送到:

"/controller/action?foo=bar"

1
async: false已被弃用! - Duc Filan

10
window.location.href = '/controller/action?foo=bar';

1
如果我想执行一个POST请求怎么办? - Paolo
3
你可以创建一个HTML的<form>,然后使用JavaScript提交这个表单。 - Darin Dimitrov
@DarinDimitrov 有没有不手动构建表单的方法? - Olle Härstedt

2

您对自己想要实现的目标不太清楚。根据我的理解,我认为您想向服务器发送一个类似于GET或POST(表单提交类似)的请求,并使其看起来像是真的。

如果是这样,您需要:

  • 使用适当的参数创建XMLHTTPRequest。
  • 使其同步。
  • 使用响应数据覆盖DOM。

1

不太清楚您想要什么,但是您可以使用jQuery的serialize(docs)将输入框中的一组值传递给表单之外或其他项目。但是,您仍然需要以某种方式提交数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接