2016-04-20 3 views
0

Я пытаюсь отправить данные на сервер, но На стороне сервера моя модель равна нулю.Сообщение Angularjs не отправляет данные на сервер

данные

{"email":"adas","password":"sds","grant_type":"password","client_id":"WebApp"} 

return $http.post(url, data,{headers: {'Content-Type': 'application/json'} }) 
      .then(function (result) { 
       success(result); 
      }, function (error) { 
       debugger; 
       //some code 
      }); 

Но когда я отправить его с помощью простого запроса Ajax, я получаю мои данные на стороне сервера.

var logininfo = { "email": "weee", "password": "password", "client_id": "IosApp", "grant_type": "password" }; 
     $.ajax({ 
      url: "http://localhost:53646/Login",     
      type: "POST", 
      data: logininfo, 
      success: function (data) { 
       debugger; 
      }, error: function (daTA) { 
       debugger; 
      } 
     }); 

И есть еще одна проблема, так как я должен послать пользовательский заголовок на сервер, поэтому, когда я установил, что заголовок в запросе Ajax затем снова мои данные в нуль на стороне сервера.

var logininfo = { "email": "weee", "password": "password", "client_id": "IosApp", "grant_type": "password" }; 
     $.ajax({ 
      url: "http://localhost:53646/Login", 
      headers: { 'ResourceAuthorization': 'Basic Qn12bGV34jEyMzQ1' },   
      type: "POST", 
      data: logininfo, 
      success: function (data) { 
       debugger; 
      }, error: function (daTA) { 
       debugger; 
      } 
     }); 

Это, как я пытаюсь получить данные

public void Configuration(IAppBuilder app) 
     { 
      app.Use(async (ctx, n) => 
      { 
       if (ctx.Request.Path == new PathString("/Login")) 
       { 
        var memstr = new StreamReader(ctx.Request.Body).ReadToEndAsync().Result; 
        var loginmodel = JsonConvert.DeserializeObject<LoginModel>(memstr); 
        //some code here     
       } 
       await n.Invoke(); 
      }); 
      ConfigureAuth(app); 
     } 
+0

Вы делаете вид: внутри угловыми-х 'Post' $ HTTP. Это должен быть метод: «POST» – kushalvm

+0

@MegaRacer '$ http.post' будет делать это самостоятельно –

+0

Спасибо @PankajParkar – kushalvm

ответ

0

Попробуйте этот метод .. это работает в моем проекте.

var userData = { 
      UserId: 1, 
      UserName: 'Karan' 
      } 
var result = $http({ 
      url: "http://your_URL", 
      dataType: 'json', 
      method: 'POST', 
      data: userData, 
      headers: { 
       "Content-Type": "application/json" 
      } 
     }) 
     result.success(function (data, status, headers, config) { 
      //success 
     }); 
     result.error(function (data, status, headers, config) { 
      //Error 
     }); 
+0

Нет. Это не работает. –

+0

Вы пишите [HttpPost] в контроллере webapi? –

+0

Да. Как и когда я отправляю его через ajax, я получаю данные ' –

0

SIT может быть сложно, я всегда должен был проверить сделку сети, чтобы убедиться, если это был действительно POST, вот мой пример кода:

function postMEthod(ID) { 
     var postURL = "your_url"; 

     var request = $http({ 
     method: 'POST', 
     headers: {"Content-Type": 'text/plain; charset=UTF-8'}, 
     url: postURL, 
     data: { 
      dataParam: "value1", 
      dataParam2: "value2" 
     } 
     }); 
     return (request.then(handleSuccess, handleError)); 
    } 

Я надеюсь, что это помогает.

1

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

var userObject = = { 
    email: "[email protected]", 
    UserName: 'user123' 
} 

function LoginUser (userObj) { 
    return $http.post('http://localhost:53646/Login', userObj, 
     headers : {'ResourceAuthorization': 'Basic Qn12bGV34jEyMzQ1'} 
).then(function (response) { 
    console.log(response.data); 
    return response.data; 
    }, function (error) { 
    console.log(error); 
    }); 
}; 

И это всегда лучше, чтобы создать HTTP вызов в качестве услуги или функции, так что мы можем использовать это.

, чтобы запустить этот HTTP вызов

просто вызовите функцию

LoginUser(userObject); 
+0

, не использую '$ q' для возврата обещания .. поскольку у вас уже есть обещание, возвращаемое' $ http.post' +1 для 'ResourceAuthorization' включено в заголовках –

+0

Но я думаю, что $ http.post возвращает только разрешенные данные, а не обещание –

+0

действительно читать из угловых документов, как работает http http ... хотя я сделал редактирование в вашем ответе. Благодаря :-) –

0

видеть, что это работает -

self.data = { "email": "adas", "password": "sds", "grant_type": "password", "client_id": "WebApp" }; 
self.getData = $http.post('../api/Controller/PostItem', JSON.stringify(self.data)) 
.then(function success(a, b) { 
    // 
}, function error(a, b) { 
    // 
}); 

enter image description here

Смежные вопросы