Midhun T P Ответов: 2

Проблема с размещенными данными JSON в web API


Привет,
У меня есть веб-страница, которая публикует данные в веб-API.
Функция ajax выглядит следующим образом.

var jsondata = { "comparisionCalculatorReq": { "transactionType": "None", "fundName": "Myfund", "annualizedReturn": "10", "frequency": "Monthly"} };  
  
$.ajax({  
type: "POST",  
url: "http://localhost:1101/Mypost/PostDataAPI",  
dataType: 'json',  
data: jsondata  
}).done(function (msg) {  
alert(msg);  
});  


В моем контроллере Web API у меня есть метод, как показано ниже

[ActionName("PostDataAPI")]  
       public string PostDataAPI(JSONdata obj)  
       {  
           try  
           {  
               string k = obj.transactionType;  
               return k;  
           }  
           catch (Exception err)  
           {  
               throw err;  
           }  
       }  



Класс JSONdata находится ниже

public class JSONdata  
   {  
       public string transactionType { get; set; }  
       public string fundName { get; set; }  
       public string annualizedReturn { get; set; }  
       public string frequency { get; set; }  
   }  



Проблема в том, что я получаю нулевое значение для transactionType в своем контроллере.

Если данные json передаются таким образом в ajax,

var jsondata={ "transactionType": "None", "fundName": "Myfund", "annualizedReturn": "10", "frequency": "Monthly"};


тогда все значения получаются правильными.
Пожалуйста, предоставьте решение для этого.

Что я уже пробовал:

Я попытался создать класс JSONdata, как показано ниже, но он все равно возвращает null для всех значений

public class JSONdata  
   {  
       public object comparisionCalculatorReq { get; set; }
       public string transactionType { get; set; }  
       public string fundName { get; set; }  
       public string annualizedReturn { get; set; }  
       public string frequency { get; set; }  
   }  

2 Ответов

Рейтинг:
1

Dil0500

Я модифицировал ваш код Аякса :

var jsondata = { "comparisionCalculatorReq": { "transactionType": "None", "fundName": "Myfund", "annualizedReturn": "10", "frequency": "Monthly"} };  
  
$.ajax({  
type: "POST",  
url: "http://localhost:1101/Mypost/PostDataAPI",  
contentType:"application/json; charset=utf-8",
dataType: 'json',  
data: JSON.stringify(jsondata)  
}).done(function (msg) {  
alert(msg);  
}); 


Midhun T P

добавление типа контента приведет к ошибке перекрестного происхождения. Так что не могу этого добавить. Кроме того, я хочу решение без строкования данных

Dil0500

Загляните по этой ссылке может быть она вам поможет
http://stackoverflow.com/questions/6114436/access-control-allow-origin-error-sending-a-jquery-post-to-google-apis

Рейтинг:
1

Midhun T P

Я нашел решение. Изменено в классе модели, как показано ниже

public class JSONdata
   {
       public comparisionCalculatorReq[] comparisionCalculatorReq { get; set; }
   }
   public class comparisionCalculatorReq
   {
       public string transactionType { get; set; }
       public string fundName { get; set; }
       public string annualizedReturn { get; set; }
       public string frequency { get; set; }
   }