为什么要向同一页面发出GET请求?

时间:2016-02-07 17:18:58

标签: c# asp.net ajax asp.net-mvc forms

我有一张表格

    <form id="registration-form">
        <fieldset class="form-group">
            <label for="name">Name</label>
            <input type="text" class="form-control" name="pname" id="name" placeholder="Enter Partner Name Here">
        </fieldset>
        <fieldset class="form-group">
            <label for="email">Email Address</label>
            <input type="text" class="form-control" name="eaddr" id="email" placeholder="Enter Email Address Here">
        </fieldset> 
        <button class="btn btn-primary" type="submit">Take Survey</button> 
        <p><span class="errmsg" id="reg-error"></span></p>        
    </form>

我的意图是提交它会调用AJAX调用

    $('#registration-form').submit(function(ev){
        ev.preventDefault();
        $.ajax({
            url : '/Account/AddPartner',
            method : 'POST',
            data : {
                pname: $('input[name="pname"]').val(),
                eaddr: $('input[name="eaddr"').val()
            },
        // ...
    });

如果成功将它们重定向到新页面,如果不成功则返回显示的错误消息。处理此问题的控制器是

    [HttpPost]
    public ActionResult AddPartner ( string pname, string eaddr )
    {
        Guid? newpid = this._Db.AddPartner(pname, eaddr);
        if ( newpid != null )
        {
            return RedirectToAction("FillOut", "Answers", new { pid = newpid }); // should redirect to /Answers/FillOut?pid=newpid
        }
        else
        {
            return Json(new { msg = "Failed get id of partner"} );
        }
   }

出于某些奇怪的原因,发生的事情是,在提交表单时,正在对表单所在的同一页面进行GET问题,例如,

  

/Account/Register?pname=klaskdljaskldjas&eaddr=akdalkkldjkl%40hotmail.com

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

RedirectToAction无法在ajax请求中运行,您必须在成功调用ajax后从客户端重定向。

另外,你在javascript

中丢失了一对“})”