#javascript #c# #ajax
#javascript #c# #ajax
Вопрос:
Я пытаюсь вызвать очень простой код, лежащий в основе метода c #, используя PageMethods (AJAX). У меня есть EnablePageMethods = true
и мой метод code behind является общедоступным статическим WebMethod. Я также пробовал ScriptMethod с WebMethod, но ничего не работает. Я также пытался изменить файл конфигурации, но безуспешно.
<script type="text/javascript">
function ShowAvailability() {
PageMethods.btnCheck_Click(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess)
};
function OnSuccess(response) {
alert("On Success");
var mesg = document.getElementById("mesg");
switch (response) {
case "true":
mesg.style.color = "green";
mesg.innerHTML = "Available";
break;
case "false":
mesg.style.color = "red";
mesg.innerHTML = "Not Available";
break;
case "error":
mesg.style.color = "red";
mesg.innerHTML = "Error occured";
break;
}
}
function OnChange(txt) {
document.getElementById("mesg").innerHTML = "";
}
function test()
{
}
</script>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" EnablePageMethods="true" EnablePartialRendering="true" runat="server" />
<div>
UserName :
<asp:TextBox ID="txtUserName" runat="server"
onkeyup="OnChange(this)"></asp:TextBox>
<%--<asp:Button ID="btnCheck" runat="server" Text="Show Availability" OnClientClick="btnCheck_Click(), return false;"></asp:Button>--%>
<br />
<button id="btncheck" onclick="ShowAvailability()">Show Availability</button>
<span id="mesg"></span>
</div>
</form>
Комментарии:
1. Так что же происходит? Что показывает консоль браузера?
Ответ №1:
используя OnClientClick, вы не можете вызвать код, лежащий в основе метода, он вызовет функцию скрипта с именем btnCheck_Click.
Use this-
<asp:Button ID="btnSearch" runat="server" ClientIDMode="Static" Text="Search" CssClass="button" OnClick="btnSearch_Click" />
и в коде, лежащем в основе использования той же страницы-
protected void btnSearch_Click(object sender, EventArgs e)
{
//your code
}
на случай, если вы хотите использовать ajax. затем в конце клиента объявляется-
Use this-
<asp:Button ID="btnSearch" runat="server" ClientIDMode="Static" Text="Search" CssClass="button" OnClientClick="btnSearch_Click()" />
и в теге скрипта вызывается ajax
function btnSearch_Click()
{
jQuery.ajax({
url: "Dashboard.aspx/getUserDetails", /* getUserDetails is a web method */
type: "POST",
data: jsondata, /* jsondata= passed parameter in json format */
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { },
error: function () {
$('#Loadingimage').hide();
jAlert("Please try again later", 'Moderators');
}
});
}
и в Dashboard.aspx.cs напишите этот код
[WebMethod]
public static String getUserDetails(string strUserId)
{
return ""; /* for string only */
}