将POST URL构建到MVC控制器

时间:2015-04-15 06:55:06

标签: javascript c# jquery asp.net-mvc

有人能指出我正确的方向吗? 我在网站上有一个表单,而且我有一个控制器。我想要做的是通过url发布带有jQuery的表单,如下所示:

/localhost:1234/something?FirstLast=Somebody&Mail=something@something.com&Phone=something

这是控制器:

[System.Web.Http.HttpPost]
public HttpResponseMessage PostPodrskaRequest(string ImePrezime, string Mail, string Telefon, int OdabranaUlogaId)
{
    try
    {
        var r = new Regex(@"^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$");

        if (string.IsNullOrEmpty(ImePrezime) || ImePrezime.Length > 128)
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Ime i prezime mora biti upisano i ne smije sadržavati više od 128 znakova!");
        if (string.IsNullOrEmpty(Mail) || (!r.IsMatch(Mail)))
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Neispravna mail adresa!");

        var cnt = this._podrskaService.GetPodrskaContent().First(x => x.Uloga.Id == OdabranaUlogaId);
        this._podrskaService.InsertPodrskaRequest(ImePrezime, Mail, Telefon, cnt.Id, OdabranaUlogaId, this._services.WorkContext.CurrentUser.Id);
    }
    catch (Exception ex)
    {
        this.Logger.Log(LogLevel.Error, ex, "Handled exception!!!");
        _transactionManager.Cancel();
        return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message, ex);
    }

    return Request.CreateResponse(HttpStatusCode.OK, "Zahtjev uspješno poslan.");
}

这是我的jQuery ajax函数:

function submitForm() {
    var params = {
        ImePrezime: $("#Forma").find('input[name="ImePrezime"]').val(),
        Mail: $("#Forma").find('input[name="Mail"]').val(),
        Telefon: $("#Forma").find('input[name="Telefon"]').val()
    }
    var str = param(params);

    greska = 0;
    $.ajax({
        type: 'POST',
        url: '@postUri',
        data: str ,
        success: function (response) {
            alert("Prošlo!");
            console.log("[OK] Poruka poslana na @postUri");
            console.log("ImePrezime" + ImePrezime);
            console.log("Mail" + Mail);
            console.log("Telefon" + Telefon);
            },
            error: function () {
                alert("Nije prošlo! :'( ");
                console.log("[FAIL] Poruka poslana na @postUri");
                console.log("ImePrezime" + ImePrezime);
                console.log("Mail" + Mail);
                console.log("Telefon" + Telefon);
            }



        });

    }

1 个答案:

答案 0 :(得分:3)

我猜你是在混淆GETPOST。使用网址发送参数时,这是GET请求。如果是在身体中发送,则为POST

如果在服务器期望GET时使用POST,则永远不会通过该操作(例如,这是为了防止XSS / CSRF)。

您必须使用$.post代替$.get才能使其成为POST请求。


关于您的更新:您正在将方法传递到data。这是不允许的。在致电var params之前,只需输入您准备的$.ajax