js调用后台方法,传递参数问题

时间:2022-04-11 21:30:33
前台js:
var ID = parseInt(objCol.title);
var str = '<%=DisplayDetails("'+ID+'") %>';

后台代码:

public string DisplayDetails(int id)
{
   
}

总是报错,参数格式不正确, 求解

19 个解决方案

#1


试试 var str = '<%=DisplayDetails('+ID+') %>'

#2


引用 1 楼 unicode 的回复:
试试 var str = '<%=DisplayDetails('+ID+') %>'


错误:字符文本中的字符太多

#3


請用 ajax來做

#4


var ID = parseInt(objCol.title);
alert(ID);
var str = <%= DisplayDetails("'+ID+'") %>;

#5


建议你  后台参数设为string 类型 传过去 后台转为int类型
试试
public string DisplayDetails(string id)
{
   int idd=Convert.ToInt32(id);
}

#6


引用 4 楼 q107770540 的回复:
var ID = parseInt(objCol.title);
alert(ID);
var str = <%= DisplayDetails("'+ID+'") %>;


这样写,您试过吗,去试试看

#7


引用 5 楼 li_1042237864 的回复:
建议你 后台参数设为string 类型 传过去 后台转为int类型
试试
public string DisplayDetails(string id)
{
  int idd=Convert.ToInt32(id);
}


后台的参数设为string,也不行啊

#8


LZ,仔细想了想,ajax前台应该是没办法给后台传值的.这段代码应该在页面被load前就已经被服务器执行了
var str = '<%=DisplayDetails("'+ID+'") %>'
所以要么直接在后台取objCol.title,要么用ajax

#9



        var id = '123456';
        var d = '<%=test("'+id+'") %>'
        alert(d);


CS代码

 public string test(string  id)
    {
        return "Hello" + id.ToString();
    }


结果弹出 Hello123456

#10


最近总是看到这个问题,成吉思汗!!!

#11


<%= %> 这个虽然写在客户端,但它是服务器端的东西。你方法 DisplayDetails("'+ID+'")里的参数id是客户端的变量,这里它是一个字符串:'+ID+'

#12


后台方法加public static
加上[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) {
                           这里是失败了
                       }
                    });

#13


在前台增加一个HiddenField控件,js中将值赋给该控件的value,然后后台调用HiddenField控件的值,呵呵,有点麻烦

#14


引用 9 楼 lchy110 的回复:
JScript code

        var id = '123456';
        var d = '<%=test("'+id+'") %>'
        alert(d);


CS代码
C# code

 public string test(string  id)
    {
        return "Hello" + id.ToString();
  ……


首先自我检讨下  呵呵 我只弹出来结果是正确的 但在CS代码里没去调试 在CS里id就如 ch_weni 兄所说的 带过去的只是个ID 所以从本质上解决不了问题  
看来还真的得用ajaxpro之类的了

#15


用隐藏控件  先接收值  然后 后台读取 
你竟然<%这块区域只能写后台代码段%>
你脑袋糊涂了吧 竟然把前台的东西  写到这个区域
1:用隐藏控件
2:用AJAX
不要在执迷不悟了  行不行呀

#16


解决问题 快速给分

#17


用隐藏控件 先接收值 然后 后台读取  
要不就用Ajax

#18


晕死,搞不清楚先后顺序了吧。

C#在解析这段代码的时候,JS还没有解析呢,JS是在客户端才解析的,也就是说服务器端串好html后发送到客户

端才执行。你在C#解析的阶段用个JS变量'id'想干啥啊?

#19


居然是无满意答案结贴。。

#1


试试 var str = '<%=DisplayDetails('+ID+') %>'

#2


引用 1 楼 unicode 的回复:
试试 var str = '<%=DisplayDetails('+ID+') %>'


错误:字符文本中的字符太多

#3


請用 ajax來做

#4


var ID = parseInt(objCol.title);
alert(ID);
var str = <%= DisplayDetails("'+ID+'") %>;

#5


建议你  后台参数设为string 类型 传过去 后台转为int类型
试试
public string DisplayDetails(string id)
{
   int idd=Convert.ToInt32(id);
}

#6


引用 4 楼 q107770540 的回复:
var ID = parseInt(objCol.title);
alert(ID);
var str = <%= DisplayDetails("'+ID+'") %>;


这样写,您试过吗,去试试看

#7


引用 5 楼 li_1042237864 的回复:
建议你 后台参数设为string 类型 传过去 后台转为int类型
试试
public string DisplayDetails(string id)
{
  int idd=Convert.ToInt32(id);
}


后台的参数设为string,也不行啊

#8


LZ,仔细想了想,ajax前台应该是没办法给后台传值的.这段代码应该在页面被load前就已经被服务器执行了
var str = '<%=DisplayDetails("'+ID+'") %>'
所以要么直接在后台取objCol.title,要么用ajax

#9



        var id = '123456';
        var d = '<%=test("'+id+'") %>'
        alert(d);


CS代码

 public string test(string  id)
    {
        return "Hello" + id.ToString();
    }


结果弹出 Hello123456

#10


最近总是看到这个问题,成吉思汗!!!

#11


<%= %> 这个虽然写在客户端,但它是服务器端的东西。你方法 DisplayDetails("'+ID+'")里的参数id是客户端的变量,这里它是一个字符串:'+ID+'

#12


后台方法加public static
加上[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) {
                           这里是失败了
                       }
                    });

#13


在前台增加一个HiddenField控件,js中将值赋给该控件的value,然后后台调用HiddenField控件的值,呵呵,有点麻烦

#14


引用 9 楼 lchy110 的回复:
JScript code

        var id = '123456';
        var d = '<%=test("'+id+'") %>'
        alert(d);


CS代码
C# code

 public string test(string  id)
    {
        return "Hello" + id.ToString();
  ……


首先自我检讨下  呵呵 我只弹出来结果是正确的 但在CS代码里没去调试 在CS里id就如 ch_weni 兄所说的 带过去的只是个ID 所以从本质上解决不了问题  
看来还真的得用ajaxpro之类的了

#15


用隐藏控件  先接收值  然后 后台读取 
你竟然<%这块区域只能写后台代码段%>
你脑袋糊涂了吧 竟然把前台的东西  写到这个区域
1:用隐藏控件
2:用AJAX
不要在执迷不悟了  行不行呀

#16


解决问题 快速给分

#17


用隐藏控件 先接收值 然后 后台读取  
要不就用Ajax

#18


晕死,搞不清楚先后顺序了吧。

C#在解析这段代码的时候,JS还没有解析呢,JS是在客户端才解析的,也就是说服务器端串好html后发送到客户

端才执行。你在C#解析的阶段用个JS变量'id'想干啥啊?

#19


居然是无满意答案结贴。。

#20