我的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";
}
}
答案 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};
这可以解决问题。