2015-11-08 42 views
0

我试图实现搜索功能。我编写了一个接受查询的操作方法,然后返回一个项目列表。首先,我不知道如何从我的angularjs服务调用它,因为我尝试过的所有方法似乎都不起作用。Web Api和Angularjs

public IHttpActionResult GetPeople(string query) { 
    var results =db.People.Where(q=>q.Name.Contains(query)); 
    return OK(results) 
} 

还有另一种方法,只返回我的数据库中的所有d项与相同的GetPeople(),但没有参数。

我试着在我的angularjs服务调用它作为

Search : function (q) { 
    var deffered = $q.defer(); 
    $http.get("/api/People/"+q).success(deffered.resolve).error(deffered.reject); 
    return deffered.promise; 
} 

如何调用d GetPeople方法,需要一个搜索值

回答

0

试试这个:

$http({ method:'GET', url:"/api/People/", params: { query:q}}) 

它也可能是你的服务器端方法声明。你有一个Route属性映射GetPeople到API /人?

0

稍尖,试图调用API之前编程尝试手动调用它, 这将有助于如果你可以分享你的路由配置, 但无论如何,我认为这应该工作 -

Search : function (q) { 
     var deffered = $q.defer(); 
     $http.get("/api/People?query?"+q).success(deffered.resolve).error(deffered.reject); 
     return deffered.promise; 
} 

在默认web api接受动作中的参数作为查询参数, 所以这应该工作, 如果你想要一个“漂亮”的路线,你应该在你的应用程序的RouteConfig部分创建一个新的路线。