我试图使用Jquery ajax调用服务器端函数,它不起作用,我没有错误。可能是什么问题?是否有一套规则来确保我的$ ajax能够正常工作?
// HTML
<asp:DropDownList ID="DDL" runat="server">
<asp:ListItem>aaa</asp:ListItem>
<asp:ListItem>bbb</asp:ListItem>
</asp:DropDownList>
// JS
$(document).ready(function () {
$("#DDL").change(function () {
$.ajax({
type: "POST",
url: "signToCity.aspx/getStreets",
contentType: "application/json; charset=utf-8"
});
});
});
//了Serverside
[WebMethod]
public static void getStreets()
{
string test="no return:just checking by breakpoint if function is working."
}
答案 0 :(得分:0)
以下是制作AJAX电话的规则的详细信息:See Here in detail
getModelMatrix()
答案 1 :(得分:0)
将服务器端代码更改为以下内容:(将void更改为字符串并返回值)
<强> c#中强>
[WebMethod]
public static string getStreets()
{
return "no return:just checking by breakpoint if function is working.";
}
jQuery:(为ajax响应添加处理程序)
$.ajax({
type: "POST",
url: "signToCity.aspx/getStreets",
contentType: "application/json; charset=utf-8",
success: function (response) {
console.log(response.d);
},
error: function (response) {
console.log('error ' + JSON.stringify(response));
}
});
答案 2 :(得分:0)
您是否在某处为您的网络控件设置了clientidmode
到static
?如果没有,ASP.NET将使用完全不同的id
您将以下标记为HTML:
<asp:DropDownList ID="DDL" runat="server">
<asp:ListItem>aaa</asp:ListItem>
<asp:ListItem>bbb</asp:ListItem>
</asp:DropDownList>
但它不是HTML,它是您的aspx页面,将被处理并输出html。查看页面源代码并查看呈现的实际HTML
。您会注意到,您的下拉列表是一个select
元素,其中id
类似于ctl00$ContentPlaceHolder1$Page$#DDL
jQuery
找不到$("#DDL")
,因为它不存在。
如果您的javascript直接位于.aspx
页面而不是外部,则可以使用以下内容将生成的客户端ID打印到您的页面
...$("#<%=DDL.ClientID%>").change(function () {
$.ajax({...
您的另一个选择是将DropDownList
的ClientIDMode设置为static
,以便在呈现网页时不会更改
<asp:DropDownList ID="DDL" runat="server" ClientIDMode="static">
<asp:ListItem>aaa</asp:ListItem>
<asp:ListItem>bbb</asp:ListItem>
</asp:DropDownList>
答案 3 :(得分:-1)
你的网址可能是问题吗?
signToCity.aspx/getStreets
看起来不正确。也许它应该是signToCity/getStreets.aspx
?
甚至只是signToCity/getStreets
?