后台(default.aspx.cs)c#方法,此方法是通过某条件查询出来的一结果 protected string GetSType()
{
string SamType = "";
DataSet ds = CommonDAL.NoPager("", "SELECT SAMPLE_TYPE FROM CHECK_TASK WHERE RSTATE='1' AND TASK_NO='" + this.txtTaskNo.Text + "'");
if (ds.Tables[0].Rows.Count > 0)
{
SamType = ds.Tables[0].Rows[0]["SAMPLE_TYPE"].ToString();
}
return SamType;
}
前台js调用此方法(default.aspx) function GetEntInfo()
{
var TaskNo=document.getElementById("<%=txtTaskNo.ClientID%>").value;
if (TaskNo == ""){
alert("请您先填写任务编号!");
return false;
}
var tye="<%=GetSType() %>";
alert(tye);
creatWindow();
w1.setText("选择企业信息");
w1.attachURL("GetEntInfo.aspx?SamType="+tye+"&rdt="+ Date());
}
问题:1.为什么每次在第一次加载时就执行了c#方法 GetSType()
2.从而导致了刚加载的时候文本框this.txtTaskNo.Text是空的,返回的结果自然是空
{
string SamType = "";
DataSet ds = CommonDAL.NoPager("", "SELECT SAMPLE_TYPE FROM CHECK_TASK WHERE RSTATE='1' AND TASK_NO='" + this.txtTaskNo.Text + "'");
if (ds.Tables[0].Rows.Count > 0)
{
SamType = ds.Tables[0].Rows[0]["SAMPLE_TYPE"].ToString();
}
return SamType;
}
前台js调用此方法(default.aspx) function GetEntInfo()
{
var TaskNo=document.getElementById("<%=txtTaskNo.ClientID%>").value;
if (TaskNo == ""){
alert("请您先填写任务编号!");
return false;
}
var tye="<%=GetSType() %>";
alert(tye);
creatWindow();
w1.setText("选择企业信息");
w1.attachURL("GetEntInfo.aspx?SamType="+tye+"&rdt="+ Date());
}
问题:1.为什么每次在第一次加载时就执行了c#方法 GetSType()
2.从而导致了刚加载的时候文本框this.txtTaskNo.Text是空的,返回的结果自然是空
解决方案 »
- 图片显示问题(IE6.0中能显示,但是在IE7.0中不能显示)
- Default.aspx中代码出错。错误:“ASP.default_aspx”并不包含“TextBox2_TextChanged”的定义;如何改错。
- 数据传递
- 一个使用用户控件的新手问题
- 大家看看,,,DataGrid的模版列,用了一个DROPDOWLIST,然后想在PermissionList_SelectedIndexChanged事件中响应,要怎么做哦 立刻给分
- 如何合并TextBox和DropDownList?
- 这个问题对我来说有点难?初学者一起学习,高手请指点迷津!
- 项目总结(八)在.NET Framework中轻松处理XML数据
- 在datagrid怎样让radio的默认选择项出现在第一个
- 域名解析,二级域名问题,急,急,急,解决就给分
- GridView1中内嵌个DropDownList
- 生成固定长度的编号
function GetEntInfo()
{
var TaskNo=document.getElementById("<%=txtTaskNo.ClientID%>").value;
if (TaskNo == ""){
alert("请您先填写任务编号!");
return false;
}
var tye="<%=GetSType() %>";
alert(tye);
creatWindow();
w1.setText("选择企业信息");
w1.attachURL("GetEntInfo.aspx?SamType="+tye+"&rdt="+ Date());
}我是想在执行js函数GetEntInfo()的时候执行var tye="<%=GetSType() %>";
实现不了你要求的功能解决方法:把GetSType()用ajax请求的方式实现
是的,只在第一次加载的时候执行了一次.如何用ajax实现,能否给个详细的例子,谢谢了
讲得简单清楚或者用ajaxpro
你这么写当然先执行了用AJAX,或者据说.net4.0 可以JS调用后台代码了!
你前台 var tye="<%=GetSType() %>";
你即使js更改了它的值,不回发到服务器,服务器this.txtTaskNo.Text仍然得不到这个改变后的值。你加一个 <input type="submit" value="submit" /> 点点看
1.下个AjaxPro.2.dll 引用到项目里
2.然后在你整个aspx.cs里注册
AjaxPro.Utility.RegisterTypeForAjax(typeof(当前页面类文件名));
3.然后在这个类里写个方法
[AjaxPro.AjaxMethod]
public string GetSType(string txt)//ajaxpro方法里不能用控件,你只能再js里将text控件取出来然后以参数形式带过来
{
string SamType = "";
DataSet ds = CommonDAL.NoPager("", "SELECT SAMPLE_TYPE FROM CHECK_TASK WHERE RSTATE='1' AND TASK_NO='" + txt + "'");
if (ds.Tables[0].Rows.Count > 0)
{
SamType = ds.Tables[0].Rows[0]["SAMPLE_TYPE"].ToString();
}
return SamType;
}
4.在你的aspx页面里直接调用这个方法
var TaskNo=document.getElementById("<%=txtTaskNo.ClientID%>").value;
var ret = 类名. GetSType(TaskNo).value;//这就是你要调用CS代码里的方法结果 自己再在JS函数里处理
你问问你同事,像这样的问题应该他们都会,要不耻下问。
貌似你说的是第一次加载了GetSType()方法而你是不想让第一次调用是吧 ??
咋看有人回答是相反的呢 ??
还是我没有看懂 ??
加上[System.Web.Services.WebMethod]
前台用AJAX调用。
var params = '{str:"'+$(this).val()+'"}'; //参数,参数名要和后台方法名字一样
$.ajax({
type: "POST",
url: "页面/方法名",
data: params,
dataType: "text",
contentType: "application/json; charset=utf-8",
success: function(msg) { //msg就是方法返回值
//这里是请求成功做的操作
},
error: function(xhr, msg, e) {
这里是失败了
}
});
var url = "../RegistValidate.ashx?username=" + escape(id);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = ShowResult;
xmlHttp.send(null);
function ShowResult() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var s;
s = xmlHttp.responseText;
}
}
RegistValidate.ashx调用方法
有参数调用
$(document).ready(function() {
$("#btn2").click(function() {
$.ajax({
type: "POST",
contentType: "application/json",
url: "WebService1.asmx/方法",
data: "{value1:''}",
dataType: 'json',
success: function(result) {
}
});
});
});
能不能具体一点呀, 我用的是vs20008的开发工具,是否要引用ajaxpro?多谢
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default7.aspx.cs" Inherits="Default7" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title> <script>
function GetEntInfo() {
var TaskNo = document.getElementById("<%=txtTaskNo.ClientID%>").value;
if (TaskNo == "") {
alert("请您先填写任务编号!");
return false;
} var tye = getType();
alert(tye);
// creatWindow();
// w1.setText("选择企业信息");
// w1.attachURL("GetEntInfo.aspx?SamType=" + tye + "&rdt=" + Date());
} function getType() {
x = window.XMLHttpRequest ? new window.XMLHttpRequest : new ActiveXObject("Msxml2.XMLHTTP")
x.open("GET", "<%= Request.Url.LocalPath %>?type=exec&" + Date.parse(new Date()), false);
x.send(null);
if (x.status == 200) {
return x.responseText;
}
else {
return "";
} }
</script></head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:TextBox ID="txtTaskNo" runat="server"></asp:TextBox>
</form>
<p>
<input id="Button1" type="button" value="测试" onclick="GetEntInfo()" /></p>
</body>
</html>c#using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class Default7 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["type"]!=null && Request.QueryString["type"].Equals("exec"))
{
Response.ClearContent();
Response.Write( GetSType());
Response.End();
}
}
protected string GetSType()
{
return DateTime.Now.ToString();
}
}
http://hi.baidu.com/812183667/blog/item/5f46202622f6290f918f9dee.html
谢谢老孟,问题解决了,真的很感谢你.可否说下是什么机制,呵呵 tks