jQuery Ajax在url路由后没有调用webmethod

时间:2011-08-16 15:27:13

标签: c# web-services jquery webmethod

我的jquery ajax函数没有调用webmethod。 jquery函数返回webservice页面的html。 功能不明白“ebulten_add”是一个webmethod!

  

“URL:ajaxPage.aspx / e_bulten”

写webmethod名称或不写是一样的..两者都返回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();
                }
            });`

ajaxPage.aspx中的web方法

    [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";            
    }
}

3 个答案:

答案 0 :(得分:1)

正如我所看到的,你正在返回字符串而不是json

所以只需更新你的dataType:'text'就应该没问题

答案 1 :(得分:0)

同意@SenadM。要么改变dataType:text,要么从网络方法中返回JSON:

[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\"}";            
    }
}

另外,请确保在web.config中启用了POST:

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

答案 2 :(得分:0)

只需将var settings = new FriendlyUrlSettings {AutoRedirectMode = RedirectMode.Permanent};更改为var settings = new FriendlyUrlSettings {AutoRedirectMode = RedirectMode.Off};这可以解决问题。