有人能指出我正确的方向吗? 我在网站上有一个表单,而且我有一个控制器。我想要做的是通过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);
}
});
}
答案 0 :(得分:3)
我猜你是在混淆GET
和POST
。使用网址发送参数时,这是GET
请求。如果是在身体中发送,则为POST
。
如果在服务器期望GET
时使用POST
,则永远不会通过该操作(例如,这是为了防止XSS / CSRF)。
您必须使用$.post
代替$.get
才能使其成为POST
请求。
关于您的更新:您正在将方法传递到data
。这是不允许的。在致电var params
之前,只需输入您准备的$.ajax
。