因此在确定如何成功使用AJAX来调用方法和检索数据方面有点麻烦。我被要求这样做,不完全确定为什么,但我通常只是在Controller中的MVC环境中处理所有这些东西。但是现在我被要求在AJAX中这样做。我有一个ASPX文件,我只是想看看工作,所以我可以继续前进。到目前为止,没有任何堆栈溢出建议有所帮助。
这是我目前所拥有的:
.ASPX /源
<script type="text/javascript">
$(document).ready(function () {
$("#go").click(function () {
$.ajax({
type: "GET",
url: "Default.aspx/ItemData",
processData: true,
data: {},
dataType: "json",
success: function () { alert("yay") },
error: function () { alert("nay") }
});
});
});
</script>
然后在我的Default.aspx.cs文件中,我有一个方法&#39; ItemData&#39;
[WebMethod]
public static NextCrew.Models.Item ItemData(string cookieID)
{
Item item = new Item();
item.name = "Fred";
item.idx = 1;
item.completed = 1;
return item;
}
(Item很简单,一个带有3个属性的Model:Name(string),idx(int)和completed(int))
我很难弄清楚我在这里做错了什么。有人可以写一个我想要做的例子吗?只是一个简单的GET请求,我可以使用AJAX返回一个对象(一旦我完成测试,我希望能够连接到数据库,所以我需要它成为一个对象)。
我无法说出我做错了什么,但我有一些想法:
1)也许我在ajax中的网址格式不正确?
2)如果我有参数,我是否需要将任何内容传递给数据?
3)是正确的.cs文件中的get方法吗?
更新
我被告知我需要一个特殊的课来处理这个问题。我试着制作一个.asmx,而AJAX仍然没有被调用。希望有人看到我错过的错误。
<script>
$(function () {
$.ajax({
type: "POST",
contentType: "application/json",
url: "WebService2.asmx/GetItems",
data: "{}",
dataType: 'Json',
success: function (result) {
// alert(result.d);
$.each(result.d, function (index, ele) {
$("#Myddl").append("<option value='" + ele.value + "'>" + ele.text + "</option>");
})
}
});
})
</script>
的.asmx
public class WebService2 : System.Web.Services.WebService
{
[WebMethod]
public List<Item2> GetItems()
{
//suppose data comes from database
var result = new List<Item2>() {
new Item2{ text="one",value="one"},
new Item2{ text="two",value="two"},
new Item2{ text="three",value="three"}
};
return result;
}
public class Item2
{
public string text { get; set; }
public string value { get; set; }
}
}