2014-11-04 96 views
0

在我的Web API項目,我有一個名爲的ContactController控制器和它命名爲同步方法,等待下面的字符串列表:帖子列表

[HttpPost] 
    [Route("api/Contact/Synchro")] 
    public IHttpActionResult Synchro([FromBody]List<string> listNumTel) 
    { 
     List<Profil> listContact = new List<Profil>(); 
     if (listNumTel.Count() > 0) 
     { 
      try 
      { 
       listContact = Librairie.Contacts.getContactSync(listNumTel); 
       return Ok(listContact); 
      } 
      catch(Exception e) { 
       return InternalServerError(e); 
      } 
     } 
     else 
     { 
      return BadRequest(); 
     } 
    } 

測試該方法中,我創建以下稱爲AJAX:

$("#btn_synchro").click(function() { 
    $.ajax({ 
     url: '../api/Contact/Synchro', 
     type: 'POST', 
     data: { 
      "listNumTel": [ 
       "+33640512999", 
       "+33640522997", 
       "+33640182998", 
       "+33640742996"] 
     }, 
     dataType: 'json', 
     success: function (data) { 
      alert('Synchro réussi: ' + data); 
     }, 
     error: function (request, error) { 
      alert("Erreur lors de la synchro"); 
     } 
    }) 
}); 

當我在調試模式下測試,呼叫工作正常,但該方法得到一個空列表。我檢查了json是否有效,它是。有人看到什麼可能是錯的?提前致謝 !

+1

如果將它作爲內容類型「application/x-www-form-urlencoded」發送,您是否可以檢查瀏覽器的請求? – 2014-11-04 16:38:02

+0

請求的內容類型似乎是:application/json – 2014-11-04 20:42:08

+1

那麼,請嘗試將其設置爲「application/x-www-form-urlencoded」,因爲我認爲您的後端不會理解它是傳入的POST請求。 jQuery似乎應該默認將其設置爲此,但嘗試在'contentType'中明確設置它 – 2014-11-04 20:44:03

回答

2

感謝您的答案,但我剛剛發現瞭解決方案。這完全是關於JSON發送。要通過一個Ajax調用,例如發送字符串列表中,JSON應該看起來像變量listNumero

("#btn_synchro").click(function() { 
    var listNumero = 
     [ '+33640532999', 
      '+33640532997', 
      '+33640532998', 
      '+33640532996']; 

    $.ajax({ 
     url: '../api/Contact/Synchro', 
     type: 'POST', 
     data: JSON.stringify(listNumero), 
     contentType: "application/json", 
     dataType: 'json', 
     success: function (data) { 
      alert('Synchro réussi: ' + data); 
     }, 
     error: function (request, error) { 
      alert("Erreur lors de la synchro"); 
     } 
    }) 
}); 

您可以比較我的帖子下面,JSON是不同的。現在我的web api控制器可以從列表中獲取值。