2017-06-09 98 views
1

我想调用的方法ProcessCriteria在AngularJS以下,但由于某种原因,我不断收到错误消息:

VM18010:1 POST (未找到)

下面是我的调用代码:

var param = { 'Item': item.Key, 'SolrLabel': SolrLabel }; 

     $http({ 
      method: 'POST', 
      url: '/api/TalentPool/ProcessCriteria', 
      data: param 
      //headers: { 
      // 'Content-Type': 'application/x-www-form-urlencoded' 
      //} 
     }).then(function (response) { 
       // success 
       console.log('Facet Data Posted'); 
       return response; 
            }, 
       function (response) { // optional 
        // failed 
        console.log('facet post error occured!'); 
       }); 

我的服务器端方法:

[System.Web.Http.HttpPost] 
     public IHttpActionResult ProcessCriteria(string Item, string SolrLabel) 
     { 

      var itm = Item; 
      var solr = SolrLabel; 

      return Ok(); 
     } 

任何建议吗?

+0

404表示您试图发布的页面不存在。您可能在网址中存在错误。 – Mistalis

+0

你肯定API端点启动和运行 - 尝试将简单的GET方法,看看您是否可以在浏览器中点击它。 –

+0

网址是正确的,因为我可以通过浏览器导航到它。因为你有你的行动2组的参数和路由器不明白 – ShK

回答

1

ASP.net无法与您的Route Table中的请求相匹配,因为您的操作中有2个参数,路由器无法理解它。

它预期的参数翘曲这个数据对象。

首先,让喜欢它型号:

public class Criteria 
{ 
    public string Item { get; set; } 
    public string SolrLabel { get; set; } 
} 

然后改变你的行动:

[System.Web.Http.HttpPost] 
public IHttpActionResult ProcessCriteria(Criteria criteria) 
{ 
    var itm = criteria.Item; 
    var solr = criteria.SolrLabel; 
    return Ok(); 
} 

更新

JSON.stringify更新JavaScript部分:

var param = { 'Item': item.Key, 'SolrLabel': SolrLabel }; 

     $http({ 
      method: 'POST', 
      url: '/api/TalentPool/ProcessCriteria', 
      data: JSON.stringify(param) 
      //headers: { 
      // 'Content-Type': 'application/x-www-form-urlencoded' 
      //} 
     }).then(function (response) { 
       // success 
       console.log('Facet Data Posted'); 
       return response; 
            }, 
       function (response) { // optional 
        // failed 
        console.log('facet post error occured!'); 
       }); 
+0

将其标记为否定,因为回复未回答问题。 – ShK

+0

@ShK你有没有发现你的问题?你有没有得到我的答案?你测试过了吗? :) –

+0

那么如何从AngularJs $ http传递标准对象? – ShK

0

如上回答说由你可以创建一个类,您可以在HTTP POST数据传递这样

var obj = { 
      url: url, 
      async: true, 
      method: 'POST', 
      headers: { 
       "content-type": "application/json; charset=utf-8", 
       } 
      }; 
      if (typeof data != 'undefined' || typeof data != null) { 
       obj.data = data; 
      } 
      $http(obj).then(function(response){ 
      },function(error){ 
      }); 
0

我得到了我的工作,下面是别人的代码,如果他们卡住就可以了。

var pvarrData = new Array(); 
      pvarrData[0] = JSON.stringify(item.Key); 
      pvarrData[1] = JSON.stringify(SolrLabel); 
      pvarrData[2] = JSON.stringify($localStorage.message); 


       $http({ 
        method: 'POST', 
        url: '/api/TalentPool/ProcessCriteria', 
        data: JSON.stringify(pvarrData), 
        headers: { 'Content-Type': 'application/json' } 
       }).then(function (response) { 
         // success 
         console.log('Facet Data Posted'); 
         return response; 
              }, 
         function (response) { 
          // failed 
          console.log('facet post error occured!'); 
         }); 
相关问题