jquery post 是 ajaxrequest 吗?

发布于 2024-11-01 18:47:55 字数 1452 浏览 0 评论 0 原文

我花了整整 3 个小时试图让它工作。我正在写一篇 jquery 帖子,但在某些地方我做错了一些事情,但我不明白是什么。

在我的方法中,我检查它是否是 ajax 请求,如果是,我根据结果返回一条字符串消息。

[HttpPost]
    public ActionResult PostJquery(ContactViewModel viewModel)
    {
        if (Request.IsAjaxRequest())
        {
            if (!string.IsNullOrEmpty(viewModel.Email))
            {
                return Content("success");
            }
            else
            {
                return Content("Fail");
            }   
        }
        else
        {
            return RedirectToAction("About");
        }
    }

我的 jquery 和 html 看起来像这样。

<% using (Html.BeginForm())
   {%>
<%: Html.TextBoxFor(model => model.Email) %>
<br />
<br />
<%: Html.TextBoxFor(model => model.Title) %><br />
<input type="submit" value="Save" id="button" />
<%} %>


<script src="<%= Url.Content("~/Scripts/jquery-1.5.2.js") %>" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {            
        $('#button').click(function (e) {
                            $.post('/Home/PostJquery', { viewModel: $('form').serialize() }, function (data) { alert(data); });                
        });
    });

</script>

它的作用是进入方法并重定向到网站,因为它不是 ajax 请求,如果我删除它,它会返回成功,但它会将我带到一个空白页面,其中写有成功文本。它不会触发警报成功。我可能做错了什么?我应该使用 .post 还是 .ajax?

感谢大家的意见

i been trying to get this to work for solid 3 hours. im doing a jquery post but some where in the line im doing something wrong but i dont get what.

in my method i check if its a ajaxrequest and if it is i return a string message based on the outcome.

[HttpPost]
    public ActionResult PostJquery(ContactViewModel viewModel)
    {
        if (Request.IsAjaxRequest())
        {
            if (!string.IsNullOrEmpty(viewModel.Email))
            {
                return Content("success");
            }
            else
            {
                return Content("Fail");
            }   
        }
        else
        {
            return RedirectToAction("About");
        }
    }

my jquery and html looks like this.

<% using (Html.BeginForm())
   {%>
<%: Html.TextBoxFor(model => model.Email) %>
<br />
<br />
<%: Html.TextBoxFor(model => model.Title) %><br />
<input type="submit" value="Save" id="button" />
<%} %>


<script src="<%= Url.Content("~/Scripts/jquery-1.5.2.js") %>" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {            
        $('#button').click(function (e) {
                            $.post('/Home/PostJquery', { viewModel: $('form').serialize() }, function (data) { alert(data); });                
        });
    });

</script>

what it does is go into the method and redirect to the site about because its not a ajaxrequest, if i remove it it returns success but it takes me to a blank page with the text success writen. it dont trigger success in alert. what im i possibly doing wrong? should i use .post or .ajax?

thanks for input folks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心的憧憬 2024-11-08 18:47:55

您需要取消按钮的默认操作,即通过返回 false 来提交表单:

$(function () {            
    $('#button').click(function() {
        $.post('/Home/PostJquery', $('form').serialize(), function (data) { 
            alert(data); 
        });
        return false;
    });
});

还要注意参数的传递方式。 .serialize() 方法已经准备好请求,因此您应该将其作为第二个参数发送。

但 AJAXify 表单的更好方法是订阅该表单的 .submit() 事件:

$(function () {            
    $('form').submit(function() {
        $.post(this.action, $(this).serialize(), function (data) { 
            alert(data); 
        });
        return false;
    });
});

更好的方法是使用 jquery 表单插件 它将您的代码转换为:

$(function () {            
    $('form').ajaxForm(function(data) {
        alert(data);
    });
});

备注:从 AJAX 请求返回时,请确保在服务器上设置正确的内容类型。

You need to cancel the default action of the button which is to submit the form by returning false:

$(function () {            
    $('#button').click(function() {
        $.post('/Home/PostJquery', $('form').serialize(), function (data) { 
            alert(data); 
        });
        return false;
    });
});

Also notice the way parameters are passed. The .serialize() method already prepares the request so that's what you should send as second argument.

but a better way to AJAXify a form is to subscribe for the .submit() event of this form:

$(function () {            
    $('form').submit(function() {
        $.post(this.action, $(this).serialize(), function (data) { 
            alert(data); 
        });
        return false;
    });
});

And even better way is to use the jquery form plugin which turns your code into:

$(function () {            
    $('form').ajaxForm(function(data) {
        alert(data);
    });
});

Remark: make sure you set the proper content type on your server when returning from an AJAX request.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文