我正在从Web API检索数据。现在,当我单击“按名称获取”按钮时,正在显示项目。
我的查看代码如下。
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<input type="text" name="name1" id="text1" value="" />
<input type="button" name="name2" id="btn2" value="Get by names" />
<ul id="names"> </ul>
<script>
$(document).ready(function () {
$("#btn2").click(function () {
$("#names").empty();
$.getJSON("/api/Customer/", function (data) {
$.each(data, function (key, val) {
$("<li>" + val + "</li>").appendTo($("#names"));
})
})
})
</script>
Web API控制器数据如下:
namespace theapis.Controllers
{
public class CustomerController : ApiController
{
private static List<string> studentnames = new List<string> { "Ammad", "Ali", "Khan" };
public IEnumerable<string> GetvalueByIndex(){
return customernames;
}
public string Getnames(int id)
{
return customernames[2];
}
}
}
结果应显示列表。 安玛德 阿里 汗
答案 0 :(得分:1)
您的代码中存在多个问题。
您将url指定为:
$.getJSON("/api/Customer/"
和按惯例,Web API将在Customer控制器中查找Get
方法,而控制器中没有名称为Get
的方法。您需要在控制器中更改名称或寻找用不同于约定的名称来调用操作方法的方法。
一种快速的方法是重命名操作方法:
public string Get()
{
private List<string> studentnames = new List<string> { "Ammad", "Ali", "Khan" };
return customernames;
}
您还缺少括号document.ready
的右括号。那段代码就像:
$(document).ready(function () {
$("#btn2").click(function () {
$("#names").empty();
$.getJSON("/api/Customer/", function (data) {
$.each(data, function (key, val) {
$("<li>" + val + "</li>").appendTo($("#names"));
}); // $.each closing
}); // $.getJSON closing
}); // button click closing
}); // document.ready closing