我用js调用C#后台函数老是参数错误了郁闷啊编译器错误信息: CS1502: 与“System.IO.TextWriter.Write(char)”最匹配的重载方法具有一些无效参数源错误: 行 80: { 
行 81:   var v = obj; 
行 82:   var s =' <%=changearea("'+v+'") %>'; 
行 83:   alert(s); 
行 84: }
<--------------------------------------------------代码块--------------------------------------------->
    <script>
 
function Init(obj) 

  var v = obj; 
  var s = ' <%=ss("'+v+'") %>'; 
  alert(s); 
}
    </script>
    
  
<body onload="Init('aa') ">
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>  //后台代码
        protected string ss(string str)
    {        return str+1;
    }为什么这样可以   
 protected  void  changearea(string  area)
    {
 bindData();
       
    } <script type="text/javascript">
     
 
function area(obj) 

  var v = obj; 
  var s =' <%=changearea("'+v+'") %>'; 
  alert(s); 
}
    </script>
      这样就报错??
 

解决方案 »

  1.   

    var 是可变参数类型, 可以代表任何数据类型
      

  2.   

    var v = obj;  
    var s =' <%=changearea("'+v+'") %>'; 
    有问题
    v是客户端变量
    <%=%>是服务器端变量..不能用服务器端的changearea()方法调用客户端变量
      

  3.   

    你要理解b/s,是怎么一个流程
    你的代码有问题
    b/s是客户端发起请求,服务器端接收后,执行代码,返回html + js ,客户端解析html 并执行js
    你的代码
    var v = obj; //这里是根据js 的动态内容 获取数据
    行 82:  var s =' <%=changearea("'+v+'") %>'; //这里的服务器代码(<%=..%>)早已经执行完毕而且你给的参数是错误的
      

  4.   

    var是匿名类型额·,系统会在赋值后判断他的类型·
      

  5.   

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!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 type ="text/javascript" >
            function window.onload()
            {
                var v = "abc";  
                var s ='<%changearea("'+v+'");%>'; 
                alert(s);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
          
        </div>
        </form>
    </body>
    </html>
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }    public void changearea(string s)
        {
            Response.Write(s+"!!!");
        }
    }
      

  6.   

    function area(obj) 

      var v = obj; 
      var s =' <%=changearea("'+v+'") %>'; 
      alert(s); 
    }  var s =' <%=changearea("'+v+'") %>'; 
    这个可行?开玩笑吧?
    运行一次后你看html源码,
      var s =' <%=changearea("'+v+'") %>'; 这句在html里变成了什么?是不是玩笑开大了,这样写都有?
      

  7.   

    var s =' <%=changearea("'+v+'") %>'; 
    这样都能JS调用后台的话,那无刷新回调函数还顶个P用啊?
      

  8.   

    var 是一个空间比较大的变量,在必要时可以转换成比较小内存的变量类型
      

  9.   

    为什么我这样做就不行呢? 
     var s = '<%=doit("+str+") %>';
     alert(s);
    他直接就报这个错了.求帮助啊。
      

  10.   

    知道了,我的少加单引号应该是 var s = '<%=doit("'+str+'") %>';
    谢谢大神们。