对服务器端事件的 JavaScript 调用
JavaScript call to server side event
所以我有一段时间没有做任何 ASP.net 了,我试图调用一些 javascript 验证,这有效,然后我需要调用事件背后的代码。
我以为这会很容易,但它变成了一个正确的麻烦。
我想做的只是检查文本框是否为空,如果是警报并且不运行任何服务端方法,如果它不为空,则运行方法。
不介意更改代码(尽管必须继续使用materpages和内容部分)。
<input type="submit" value="Update" onclick="validate()"/>
<SCRIPT LANGAUGE="JavaScript">
function validate() {
var jname = document.getElementById('MainContent_txtname').value;
if (jname == null) {
alert("Please Enter Name");
}
else {
CallServerMethod();
}
}
function CallServerMethod() {
UpdateClient() //I dont work
}
</SCRIPT>
有什么想法吗?谢谢
你可以让 Ajax 调用服务器页(aspx 页/.ashx 处理程序)来执行此操作。这就是你使用jQuery的方式(如果你已经在项目中使用它)
function CallServerMethod()
{
$.post("yourserverpage.aspx", { name : "Scott" }, function(data){
//now data variable has the result from server page. do whatver you
// want with that. May be an alert
alert(data);
});
}
在yourserverpage.aspx
文件中,您可以从请求参数中读取 name 键值,并执行您想要执行的任何服务器代码并使用 Response.Write() 方法返回一些内容
例如 : Response.Write("user saved");
本网站上有大量关于此主题的信息。
这对你来说是一个好的开始:从客户端 javascript 调用服务器端函数
你要找的是ajax。更简单的方法是使用jquery,它有一个$.get或$.getJSON或$.ajax方法,它包装xmlhttprequest(用于从javascript调用服务器方法的对象)。
另一种简单的方法是查看WebMethod。您需要将[WebMethod]
属性设置为服务器端方法,将脚本管理器添加到 aspx 页,然后使用 PageMethods.MyServerMethod 调用服务器方法。
$.ajax({
type: "POST",
url: "mypage.aspx/ServerMethodName",
data: '{"id":"' + $("#divID").text() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (returnValueFromServerMethod) {
if(returnValueFromServerMethod.d != "")
//do something great
}
});
[WebMethod]
public static string ServerMethodName(string id)
{
HttpContext.Current.Session["ID"] = id;
}
您需要在页面中添加脚本管理器.aspx以启用页面方法。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
您可以将页面方法的东西替换为服务.svc,这将更干净。
function validate(){
var jname = document.getElementById("MainContent_txtname').value;
if(jname.length == 0){
alert("Empty text field");
}else{
CallServerMethod(jname);
}
}
function CallServerMethod(param){
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//we have an xmlhttp object
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
var response = xmlhttp.responseText;
UpdateClient(response);
}
}
xmlhttp.open("GET","server_page.php?jname="+param,true);
xmlhttp.send();
}
function UpdateClient(response){
alert("Server responded with response: "+response);
}
然后将验证设置为 onChange 事件。 所以....<input....onChange="validate();" />
显然,server_page.php也可以是server_page.asp或其他任何东西,该参数只是在GET请求中进行URL编码。您也可以使用发布请求发送它,但这需要更多的工作......
//in the last part of CallServerMethod(),
//replace the last 2 lines with:
xmlhttp.open("POST","server_page.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length",param.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(param);
我一直在使用.ajax({ ...如何做到这一点。但是,我最近遇到了另一种更简单的方法来实现这一目标 - MSDN 链接
一个简单的解决方案是让你的javascript点击一个隐藏的按钮。
<SCRIPT LANGAUGE="JavaScript">
function validate() {
var jname = document.getElementById('MainContent_txtname').value;
if (jname == null) {
alert("Please Enter Name");
}
else {
CallServerMethod();
}
}
function CallServerMethod() {
document.getElementById('<%#btnRefresh.ClientID %>').click();
}
</SCRIPT>
然后在代码隐藏中的按钮单击事件中执行您希望它执行的任何操作。
如果我理解正确,这似乎是最简单的解决方案。
- 从javascript调用asp.net codebehind函数
- 如何使用javascript调用Php文件
- Can用户'MediaWiki上的自定义JavaScript调用Lua模块
- 从Javascript调用Applet方法
- php javascript代码从javascript调用php函数
- 是否可以从html中的javascript调用.vbs文件
- 从javascript调用C#Web服务并使用它(json格式)
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- Sinon Spy不使用Javascript调用或应用程序
- 使用javascript调用javawebservice
- 从javascript调用服务器端的下拉列表onchange函数
- 单击按钮时,使用Javascript调用并返回值
- 函数1结束后,JavaScript调用函数2
- 对wcf服务的javascript调用
- 使用JavaScript调用Excel文件
- 从JavaScript调用JAX-WSWeb服务时参数为Null
- 从javascript调用codeigniter方法并传递数据
- 使用usinf-if语句javascript调用函数
- 通过Javascript调用php文件
- 从javascript调用flash点击事件