Search code examples
c#web-servicesjquerywebmethod

jQuery Ajax not calling webmethod after url routing


my jquery ajax function is not calling webmethod. jquery function return webservice page's html. function is not understand "ebulten_add" is a webmethod!

"url:ajaxPage.aspx/e_bulten"

to write webmethod name or not write is same.. both of return ajaxPage.aspx html.

$.ajax({
                type: "POST",
                url: 'ajaxPage.aspx/ebulten_Add',
                data: "{ebEmail:'" + Ebemail + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {

                    $("#span_result").hide();
                    $("#span_spinner").hide();
                    $("#span_result").html(result.d).fadeIn();
                },
                error: function (msg) {                     
                    $("#span_result").hide();
                    $("#span_spinner").hide();
                    $("#span_result").html("Lütfen tekrar deneyin.").fadeIn();
                }
            });`

web method in ajaxPage.aspx

    [System.Web.Services.WebMethod]
public static string ebulten_Add(string ebEmail)
{
    if (ebEmail == "Email")
    {
        return "*Bilgilerinizi Girmediniz";
    }
    else
    {
        List<ListItem> ebList = new List<ListItem>();           
        ebList.Add(new ListItem("@Eb_email", ebEmail));
        BL.Atom.GetByVoid("spEbulten_Add", ebList);
        return "*E-Bülten kaydınız başarıyla tamamlanmıştır";            
    }
}

Solution

  • Agree with @SenadM. Either change the dataType:text or return JSON from your webmethod:

    [System.Web.Services.WebMethod]
    public static string ebulten_Add(string ebEmail)
    {
        if (ebEmail == "Email")
        {
            return "{ \"response\": \"*Bilgilerinizi Girmediniz\"}";
        }
        else
        {
            List<ListItem> ebList = new List<ListItem>();           
            ebList.Add(new ListItem("@Eb_email", ebEmail));
            BL.Atom.GetByVoid("spEbulten_Add", ebList);
            return "{ \"response\": \"*E-Bülten kaydiniz basariyla tamamlanmistir\"}";            
        }
    }
    

    Also, make sure POST is enabled in your web.config:

    <configuration>
        <system.web>
        <webServices>
            <protocols>
                <!-- <add name="HttpGet"/> --> <!-- uncomment to enable get -->
                <add name="HttpPost"/>
            </protocols>
        </webServices>
        </system.web>
    </configuration>