2014-09-05 23 views
2

我試圖做的,使用WinJS.xhrWinJS.xhr沒有的HttpRequest將數據傳遞到網絡API

當我做的一切是通過正確地傳遞不同的是數據的請求的Web API服務的調用(參數)不包含在請求中。

的網頁API

[Route("api/Products/GetProductsByCategory")] 
    [HttpGet] 
    public IHttpActionResult GetProductsByCategory([FromBody]int categoryId) 
    { 
     try 
     { 
      //Some logic to return data 
      return Json(_result.AsEnumerable<Models.ProductModel>()); 
     } 
     catch (Exception ex) 
     { 
      //Log error to log file 
      return Content(HttpStatusCode.InternalServerError, "There was a error loading the products. View the log file for more details"); 
     } 
    } 

JavaScript的我用做實際的請求

var url = "http://localhost/rauto.webapi/api/Products/GetProductsByCategory" 
var parameters = 6 
var options = { 
       url: url, 
       responseType: "json", 
       headers: { "Content-type": "application/json" }, 
       data: JSON.stringify(parameters) 
       } 

return WinJS.xhr(options).then(Success, Fail) 

當我微量元素提琴手請求得到以下原始數據

請求:

GET http://localhost/rauto.webapi/api/Products/GetProductsByCategory HTTP/1.1 
Accept: */* 
Content-Type: application/json 
Accept-Language: en-ZA,en;q=0.7,af;q=0.3 
UA-CPU: AMD64 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; MSAppHost/2.0;  rv:11.0) like Gecko 
Connection: Keep-Alive 
Host: localhost 

迴應:

HTTP/1.1 200 OK 
Cache-Control: no-cache 
Pragma: no-cache 
Content-Length: 2 
Content-Type: application/json; charset=utf-8 
Expires: -1 
Server: Microsoft-IIS/8.5 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Fri, 05 Sep 2014 07:18:03 GMT 

[] 

爲什麼數據不附加在httpRequest的主體中?

+0

月1日;最常見的一個「GET」請求使用的URL數據/參數,而不是正文。第2;你的數據似乎不完整。嘗試將「參數」從「= 6」改爲「= {categoryId:6}」 – 2014-09-05 07:32:25

+0

我試過參數{categoryId:6}它仍然有相同的結果。如果我在它的URL中傳遞參數,但我需要傳遞正文中的te參數。 – 2014-09-05 07:40:17

回答

0

我個人會讓MVC處理它,並在這種情況下使用路由。我相信這會是這樣的:

[Route("api/Products/GetProductsByCategory/{categoryId:int}")] 
[HttpGet] 
public IHttpActionResult GetProductsByCategory(int categoryId) 
{ 

不僅僅是參數添加到URL在JavaScript:

var url = "http://localhost/rauto.webapi/api/Products/GetProductsByCategory" 
var parameters = 6 
var options = { 
       url: url+'/'+parameters, 
       responseType: "json", 
       headers: { "Content-type": "application/json" }, 
       } 

return WinJS.xhr(options).then(Success, Fail)