asp.net与js问题(100分求助)

tcspace 2007-11-07 07:13:54
var a='<%= GetFolderRecordByFolderName("'+obj.Text+'") %>';

js里我调用asp.net后端方法GetFolderRecordByFolderName(string name),
obj.Text是个变量,但是我每次传过来的时候是obj.Text字符而不是变量。

请问这个语句怎么写?忘大虾们给点意见。o(∩_∩)o...
...全文
304 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
it_mpf 2007-11-12
  • 打赏
  • 举报
回复
不好意思,刚才没看仔细,现在我试了可以的
js:
<script language= "javascript " type= "text/javascript ">
// <!CDATA[

function Button1_onclick() {
var a=document.getElementById( 'Text1 ').value;
var name= ' <%=MyName( " '+a+ ' ") %> ';

alert(name);
}

// ]]>
</script>
<input id= "Text1 " type= "text " /> <asp:TextBox ID= "TextBox1 " runat= "server "> </asp:TextBox>
<input id= "Button1 " type= "button " value= "button " onclick= "return Button1_onclick() " />
后台:
public string MyName(string a)
{
return a;

}

====================================================================================================================

乱讲,能调通才怪!!
it_mpf 2007-11-09
  • 打赏
  • 举报
回复
楼主,如果你清楚服务端脚本和客户端脚本的执行顺序你就知道为什么了!'
var a= ' <%=GetFolderRecordByFolderName( " '+obj.Text+ ' ")%> ';

这句,在服务端接到请求后,会把所有的<%%>之间的代码都执行掉的,所以你这个相当于在服务端执行了
GetFolderRecordByFolderName( " '+obj.Text+ ' ")
这里的'+obj.Text+ '会被当做字符串处理掉的

而客户收到服务端执行的结果才执行javascript脚本,这时<%GetFolderRecordByFolderName( " '+obj.Text+ ' ")%> 已经执行过了!
客户端收到的脚本会变成a='xxx',xxx为GetFolderRecordByFolderName( " '+obj.Text+ ' ")返回的结果

希望我说的你能明白,我的主要意思就是服务端脚本在先于客户端脚本执行的,asp.net是服务端脚本,而javascript是客户端脚本,不可能像你那样混合执行的.

你想把客户端的数据发送了服务端,然后显示处理结果,请用ajax等技术...
mysky0103 2007-11-09
  • 打赏
  • 举报
回复
不好意思,刚才没看仔细,现在我试了可以的
js:
<script language="javascript" type="text/javascript">
// <!CDATA[

function Button1_onclick() {
var a=document.getElementById('Text1').value;
var name='<%=MyName("'+a+'") %>';

alert(name);
}

// ]]>
</script>
<input id="Text1" type="text" /><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
后台:
public string MyName(string a)
{
return a;

}
anncesky 2007-11-09
  • 打赏
  • 举报
回复
var a= ' <%= GetFolderRecordByFolderName( " '+obj.Text+ ' ") %> ';

这个东西为什么不在后台处理,赋给一个值,再<%=%>到ASPX不就可以了吗???
mysky0103 2007-11-09
  • 打赏
  • 举报
回复
javacript 可以直接使用后台函数吗?
tcspace 2007-11-09
  • 打赏
  • 举报
回复
还是先谢谢nihongyuan , 现在实现不刷新方法很多。xmlhttp我以前写完了,现在只是想换种方式实现。
在JS里写动态代码。
tcspace 2007-11-09
  • 打赏
  • 举报
回复
obj.Text 是我文本里输入的值。
var a= ' <%= GetFolderRecordByFolderName( " '+obj.Text+ ' ") %> ';

这种方法开始就试过了,不行。
bwangel 2007-11-08
  • 打赏
  • 举报
回复
var a= ' <%= GetFolderRecordByFolderName( " '+obj.Text+ ' ") %> ';
在<%%>里边, ['+obj.Text+'] [...]里边这几个字符全成了get...方法的参数.
应该:

var a= '<%=GetFolderRecordByFolderName(obj.Text)%>';
这里假设obj是一个TextBox或其他有Text属性的控件
bwangel 2007-11-08
  • 打赏
  • 举报
回复
var a= ' <%= GetFolderRecordByFolderName( " '+obj.Text+ ' ") %> ';
在<%%>里边, ['+obj.Text+'] [...]里边这几个字符全成了get...方法的参数.
应该:

var a= '<%=GetFolderRecordByFolderName(obj.Text)%>';
qawszx 2007-11-08
  • 打赏
  • 举报
回复
obj.Text是个变量,你起的变量名好有个性哦,这样命名变量可以吗?记不清了。我想它应该是一个控件(文本框)的值吧。
getElementById( 文本框ID).value直接取值
如果真的是个变量的话,你可以试试给这个变量换个名字,例如obj,
var a= <%= GetFolderRecordByFolderName(obj)%>
路人乙e 2007-11-08
  • 打赏
  • 举报
回复
--JS代码
<script type= "text/javascript ">
function test()
{
var txtName = document.getElementById( "Text1 ").value;
var result = '<%=TestData(txtName))%> ';//var result = '<%=TestData('+txtName+')%>'
alert(result);
}
</script>
oec2003 2007-11-08
  • 打赏
  • 举报
回复
可以在c#的代码中 写一个方法来getvalue返回 :GetFolderRecordByFolderName( " '+obj.Text+ ' ")
然后在客户端用 var a= <%= getvalue() %> ;
honey52570 2007-11-08
  • 打赏
  • 举报
回复
不知所云
symbol441 2007-11-08
  • 打赏
  • 举报
回复
var a= ' <%= GetFolderRecordByFolderName( " '+obj.Text+ ' ") %> ';

js里我调用asp.net后端方法GetFolderRecordByFolderName(string name),
obj.Text是个变量,但是我每次传过来的时候是obj.Text字符而不是变量。

请问这个语句怎么写?忘大虾们给点意见。o(∩_∩)o...


----------------------------------------------------------

如果你的obj是一个文本框控件,可以这样写获取文本框的值


var a="<%=GetFolderRecordByFolderName(obj.Text) %>";
wuxing2006 2007-11-08
  • 打赏
  • 举报
回复
楼主思路混了

呵呵

yangkaihang 2007-11-08
  • 打赏
  • 举报
回复
自己去用ajax 传值
qq22345111 2007-11-08
  • 打赏
  • 举报
回复
直接
document.getElementById(obj).value;
就行了
那里来那么麻烦
如果是获取其他页面的变量(比如:随机值)
那么使用ajax 异步回传参数就行了
草原可可 2007-11-08
  • 打赏
  • 举报
回复

先确认obj.Text的值是否已经过期了
O15013245O 2007-11-08
  • 打赏
  • 举报
回复
替LZ分析一下
这行JS应该是生成一个页面后在页面执行的某个事件,这时,此页面在服务器的生命周期已经结束,如果要调用服务器端的方法,那么需要向服务器发送请求才能够完成;
如果不是这样,那么就是在生成页面的时候调用的这行JS,如果这样的话,obj.Text的值应该是某个变量赋值给他的,这样的话,就不需要再用obj.Text了直接用那个变量就可以了。
tcspace 2007-11-08
  • 打赏
  • 举报
回复
我知道用xmlhttp等其他方法可以实现。
但是这是我测试用的,我只是想看下在JS里到底可以直接传变量到服务器去不.
我还是把代码贴出来好点,上面让大家误会了。o(∩_∩)o...

---页面代码
<input id="Text1" runat="server" value="gods" type="text" />
<input id="Submit2" type="submit" onclick="test()" value="submit" />


--JS代码
<script type="text/javascript">
function test()
{
var txtName = document.getElementById("Text1").value;
var result = '<%=TestData(txtName))%>';
alert(result);
}
</script>


--后端代码
protected string TestData(string name)
{
return name;
}

点 SubMit按钮调用js test()函数,然后在test()函数里调用TestData(txtName)服务器方法,然后把值返回过来。
问题:-->怎么动态传我在文本里输入的txtName?
加载更多回复(11)

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧