jquery ajax没有开火

时间:2015-12-16 18:44:20

标签: javascript jquery asp.net ajax

我试图使用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."

        }

4 个答案:

答案 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)

您是否在某处为您的网络控件设置了clientidmodestatic?如果没有,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"),因为它不存在。

选项1:

如果您的javascript直接位于.aspx页面而不是外部,则可以使用以下内容将生成的客户端ID打印到您的页面

 ...$("#<%=DDL.ClientID%>").change(function () {                             
                $.ajax({...

选项2:

您的另一个选择是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