我有一个mvc3 Ajax.BeginForm。我没有点击按钮,而是希望从其中一个文本框的onblur事件中点击JavaScript按钮。
我已经尝试过以下代码,并且只使用$('#submitEmail')调用函数.Click();在里面。提交工作,我得到回复,但问题是在Controller Request.IsAjaxRequest()是假的。当我单击按钮时,我自己Request.IsAjaxRequest()为真。
@Html.TextBoxFor(model => model.LeadEmail, new { onBlur = "this.form.submit();" })
是的我用fiddler检查过X-Requested-With在使用JavaScript触发器时不存在。如何让它在onBlur事件上提交表单并获得正确的ajax标题?
答案 0 :(得分:1)
所以我不确定为什么我尝试的方式不起作用。我认为它的方式应该有效。我按下按钮或代码按下按钮应该是一样的。显然有区别。也许在这个领域有知识的人可以告诉我们。 但解决方案是实际做一个ajax帖子。
<script type="text/javascript">
function FormAjaxSubmit() {
var someThing = $("#SomeThing").val();
$.ajax({
url: "/Control/Action",
type: "POST",
data: { SomeThing: someThing },
success: function (result) {
$('#resultDiv').html(result);
}
});
}
</script>
答案 1 :(得分:1)
我想在Tigran的回答中添加一些内容:
<script type="text/javascript">
function FormAjaxSubmit() {
var f = $("form").serialize();
$.ajax({
url: "/Control/Action",
type: "POST",
data: { formCollection: f },
success: function (result) {
$('#resultDiv').html(result);
}
});
}
</script>
答案 2 :(得分:0)
在表单上调用submit方法与单击表单的提交按钮基本相同,当您这样做时,浏览器会根据方法属性中定义的方法类型(GET / POST)执行请求。
调用submit不是ajax请求,它是一个表单提交,它会执行整页重新加载,这就是它无效的原因。