日期:2014-05-16  浏览次数:20392 次

求助,JS调用后台,并传递多个参数
function sub() {
  var n = document.getElementById("name").value;
  var s = document.getElementById("sex").value;
  var c = document.getElementById("card").value;

  var a = ' <%=insert() %>';
  alert(a);
  }

insert方法有三个参数,我要把n,s,c的数据传过去

------解决方案--------------------
楼主,这样就可以调后台?要知道页面代码解释的优先级,<%%>内先、js次之、html再次之
------解决方案--------------------
这不是js调用后台,而是<%= %>这里面的代码会作为后台代码运行,然后用得到的结果替代该代码然后把html页面发送到前台,也就是说该后台函数只会在页面加载前执行一次

建议楼主了解下web程序页面过程就会知道你这种方式是不能实现的,因为前台js代码与后台代码根本不是运行在同一台电脑(这儿用心理解了,以后你不会再有类似疑惑)

还是写Ajax请求吧,不进行通信是不可能实现跨电脑调用函数的

你现用的方法,正确写法是:
var a = ' <%=insert(\"'+n+'\",\"'+s+'\",\"'+c+'\") %>';
不用试我都知道这儿应该会报错,错误应该是n,s,c未定义?而不用变量,用常量字符串的话却不会报错(结合我上面说的,如果你自己能想明白为什么的话你就理解了)
不过我可以保证这个无法达到动态调用后台函数的目的,初学者总是不能理解页面过程,也就不能明白为什么前台函数和后台函数间不能互相调用,我当初也曾这么搞笑...想找一个能在前台直接调用后台函数的方法...

另,前面那儿错误原因是:
既然是作为后台代码在页面加载前运行,那时页面根本还没有加载,哪里有这些变量?所以一旦用变量作参数就错,而常量却不会错