关于JS调用后台方法,为页面绑定值的问题。。
<script type="text/javascript" >
function cs(jlzdID, userID) {
var a = '<%=BindAll("' + jlzdID + '","' + userID + '") %>';
window.location.href = location.href;
alert(jlzdID + "\n" + userID+a);
}
</script>
为什么我这个脚本放在body外面就会报错呢,可是放在body里面我在传值调用这个脚本的时候后台给页面绑定值的方法走完页面就不会显示出来我绑定的值,但是返回的值我在前台可以接收到并弹出来。如果我直接把jlzdID与userID赋值,在页面第一次打开的时候就会调用后台的方法并把值赋到页面。请问这个怎么可以在我调用JS时我的页面也把值赋上呢,这两个值是在别的程序里面传递过来的。。还有为什么脚本写在body外面会出错,在body外面应该怎么调用后台的代码呢?
脚本
function
C#
Ajax
ASP.NET
------解决方案--------------------前台:
<head runat="server">
<title></title>
<script>
var val="http://";
alert('<%=getString("'+val+'") %>');
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
后台:
protected string getString(string xx)
{
return xx+"www.baidu.com";
}
运行结果:
看看和你的代码有啥区别
------解决方案--------------------放哪里都调用不到,记住,不要试图在 <% %>、<%= %> 中使用 JS 变量,因为其中的代码是 C# 代码,也即是后台的代码,JS 是属于前台的。
9 楼的给的代码是错误的,<%=getString("'+val+'") %> 对于后台来说,参数 xx 的值为 ' +val+ ',所以在页面上生成的 html 为 alert('' +val+ 'www.baidu.com'),因此你能够得到一个正确的解,但过程是彻头彻尾的错了,如果要对参数 xx 做一些处理,如 return xx.Substring(0, 1) + "www.baidu.com"; JS 就报错了。
要做到你预想的效果,只能是通过 Ajax,建议你看下 JQuery,其实也不复杂。
------解决方案--------------------这个如果必须有这种需求 用webservers 也是可以的
//webservers
[WebMethod(EnableSession = true)]
public string updateCatalogState(int cid,int cstate)
{
if (Session["userName"] != null)
{
if (CatalogAdmin.updateCatalogStateBycid(cid, (cstate == 0 ? 1 : 0)))//查询数据
&n