[asp.net]我得到"得到"而不是"开机自检"web 服务的 web 服务

发布时间: 2017/3/26 2:31:52
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我已经用这篇文章对 web 服务的 Jquery Ajax 过帐 json将数据发送到服务器将通过"后"的 web 服务,但它已经像在浏览器中的"网络"部分中的"Get"亲和,这是我得到了什么︰

enter image description here

这是我的网站 service(ASP.net) 的代码︰

// Insert Student
        [Route("api/Students/ajout")]
        [System.Web.Http.ActionName("Create")]
        public async Task<HttpResponseMessage> Post(Student value)
        {

            try
            {

                if (ModelState.IsValid)
                {
                    _StudentService.Insert(value);
                    var response = Request.CreateResponse<Student>(HttpStatusCode.Created, value);
                    await _unitOfWorkAsync.SaveChangesAsync();
                    return response;
                }
                else
                {
                    return Request.CreateResponse(HttpStatusCode.InternalServerError, "Model state is invalid");
                }
            }
            catch (Exception ex)
            {
                return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }
        }

这是我的代码 (AngularJS)

$.ajax({
       type: 'POST',    
       url : 'http://localhost:50001/api/Students/ajout',
       dataType: 'jsonp',
       contentType: "application/json; charset=utf-8",
       data: { FirstName: ''+$scope.FirstName+'', LastName: ''+ $scope.LastName+'' , Email: ''+ $scope.Email+'' , DropOut:'' +$scope.dropout.value1+'' , Live: ''+$scope.live.value2+'' , ClassId:2, ImageId:1}, // On fait passer nos variables, exactement comme en GET, au script more_com.php
       success: function(data){                             
            console.log("success");
       },
       failure: function(errMsg) {
        console.log(errMsg);
    }   
    });

你请任何念头可以我怎么处理这一问题,谢谢了很多的帮助

更新︰ 我改变了代码像这样︰

$.ajax({
       type: 'POST',    
       url : 'http://localhost:50001/api/Students/ajout',
       dataType: 'json',
       contentType: "application/json; charset=utf-8",
       data: { FirstName: ''+$scope.FirstName+'', LastName: ''+ $scope.LastName+'' , Email: ''+ $scope.Email+'' , DropOut:'' +$scope.dropout.value1+'' , Live: ''+$scope.live.value2+'' , ClassId:2, ImageId:1}, // On fait passer nos variables, exactement comme en GET, au script more_com.php
       success: function(data){

      $rootScope.usersData = angular.toJson(data);
       console.dir($rootScope.usersData);                                 
            console.log("success");
       },
       failure: function(errMsg) {
        console.log(errMsg);
    } });

但我会出现此错误︰ 客户端代码无法加载http://localhost:50001/api/学生/ajout。印前检查响应具有无效的 HTTP 状态代码 405

解决方法 1:

在您的 api 尝试删除 [Route("api/Students/ajout")],而不是 [System.Web.Http.ActionName("Create")] 把 [HttpPost]。 在您的控制器,我建议你用 angularjs 查询,而不是 ajax 请求。

如果您编辑您的 api 控制器运行应此请求︰

var request = $http({
    url:"api/students/",
    dataType:"json", 
    method:"POST",
    data:JSON.stringify(student),//you can send directly the object student if is well-trained or use params:{'name':value, ...}
    contentType:"application/json; charset=utf-8"
}); 

并在您的 Api 控制器来恢复您的对象,如果你使用到更改您的方法为︰

 [HttpPost]
    public void CreateStudent([FromBody]Student value)
    {
      ...
    }

我不知道是否你这样做,但在你的 html 而不是您的输入绑定 student.firstName 绑定属性名字。这样,您可以恢复直接 $scope.student 与属性 $scope.student.firstName 而不是恢复一个接一个的每个属性。所以直接发送对象愿意我可以把在示例中。

因此,我希望这会很有帮助。 让我告知你的进步。有美好的一天。

赞助商