2015-04-15 42 views
0

有人可以指點我在這裏的正確方向... 我有一個網站的形式,我有一個控制器。我想要做的是通過URL與jQuery發佈形式是這樣的:建立POST網址到MVC控制器

/localhost:1234/something?FirstLast=Somebody&[email protected]&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

你爲什麼一直在改變你的問題?你繼續使我的答案無效... –

+0

哦,對不起,我應該通過評論你的答案分享新代碼嗎? – Tomislav

+0

爲什麼你需要分享它?如果沒有必要,請不要發佈。那麼答案就足夠了。如果答案沒有幫助,請說明原因。回答者可能會要求提供代碼,但這往往是無休止討論的開始。 –

回答

3

我想你是混合GETPOST。當您使用URL發送參數時,它是一個GET請求。如果它是在身體發送,它是一個POST

如果您在服務器期望POST時使用GET,則永遠不會執行操作(例如,防止XSS/CSRF)。

您必須使用$.post而不是$.get以使其成爲POST請求。


關於您的更新:您正在將方法傳遞到data。這是不允許的。請撥打var params,然後致電$.ajax