js调用C#后台方法报错

-一个大坑 2018-01-18 03:53:34
错误提示:無法修改 Controls 集合,因為控制項包含程式碼區塊 (例如 <% ... %>)。

<asp:TextBox ID="Text_Cardid" runat="server" Width="150px" onchange="javascript:CheckNumber(this)"></asp:TextBox>
<script language="javascript" type="text/javascript">
function CheckNumber(number) {
var str = number.value.length;
if (str >= '8') {
var result = "<%=Getstr()%>";
if (result == 'NO') {
alert("查不到該卡信息!!");
}
}
}
</script>

public string Getstr()
{
  string aa = "NO";
  return aa;
}

...全文
536 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
-一个大坑 2018-01-20
  • 打赏
  • 举报
回复
引用 10 楼 stevenjin 的回复:
是的,你之前后台的方法写了参数,而前端ajax没有传递,当前进不去。你用debug应该能看到提示。
最开始后台没写传值的,后来能进后台方法我才传值
-一个大坑 2018-01-20
  • 打赏
  • 举报
回复
引用 11 楼 lkf181 的回复:
"<%=Getstr()%>" 是什么鬼?
网上搜的js调用C#方法,基本都是这个方法
秋的红果实 2018-01-20
  • 打赏
  • 举报
回复
引用 11 楼 lkf181 的回复:
"<%=Getstr()%>" 是什么鬼?
调用服务端方法,例如 aspx页面

<body>
    <form id="form1" runat="server">
    <div>
       
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        <%=getString()%>
       
    </div>
    </form>
</body>
cs页面

public partial class webForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
        
    }
    public string getString() //这里要public
    {
        return "asdf";
    }

lkf181 2018-01-20
  • 打赏
  • 举报
回复
"<%=Getstr()%>" 是什么鬼?
-一个大坑 2018-01-19
  • 打赏
  • 举报
回复
引用 6 楼 andywangguanxi 的回复:
前两天刚刚有人问ajax调用webform里的方法 http://bbs.csdn.net/topics/392307496 你给TextBox赋值也可以用js的啊。ajax调用到后台方法,获取到值,在sucess的回调函数里面给TextBox赋值。
试了下,用<input type="text" id="carid" width="150px" onkeyup="javascript:CheckNumber(this)" /> 还是进不去后台,看样子只能在后台加static了
EdsionWang 2018-01-19
  • 打赏
  • 举报
回复
前两天刚刚有人问ajax调用webform里的方法 http://bbs.csdn.net/topics/392307496 你给TextBox赋值也可以用js的啊。ajax调用到后台方法,获取到值,在sucess的回调函数里面给TextBox赋值。
stevenjin 2018-01-19
  • 打赏
  • 举报
回复
是的,你之前后台的方法写了参数,而前端ajax没有传递,当前进不去。你用debug应该能看到提示。
-一个大坑 2018-01-19
  • 打赏
  • 举报
回复
引用 4 楼 shulong 的回复:
aspx页面的返回只能是整个page(页),你的Getstr应该是该页的函数,这样肯定进入不了,这是别人写的,你可以实验一下 using System.Web.Services; //引入命名空间 [WebMethod] public static string SayHello() { return "Hello Ajax!"; }
我要用input吗?加static 就不能给文本框赋值了 Text_Name.Text = "1213"; 我主要就是查询,能查到就把相关的值带到相应的文本框,没有提返回NO,然后前端页面提示
-一个大坑 2018-01-19
  • 打赏
  • 举报
回复
解决了。留个模板

<asp:TextBox ID="Text_Cardid" runat="server" Width="150px" onkeyup="javascript:CheckNumber(this)"></asp:TextBox>
<script language="javascript" type="text/javascript">
        function CheckNumber(cardstr) {
            if (cardstr.value.length >= '8') {
                $.ajax({
                    type: "post",
                    url: "RQ16.aspx/Getstr",
                    data: "{ 'cardid': '" + cardstr.value + "' }",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        if (data.d == 'NO') {
                            alert("查不到該卡信息!!");
                        } else {
                            var jsonObj = eval('(' + data.d + ')');
                            $("#Text_Emplid").val(jsonObj.EMPLID);
                            $("#Text_Name").val(jsonObj.CNAME);
                            $("#Drop_Sex").val(jsonObj.SEX);
                        }
                        $("#Text_Cardid").val('');
                    },
                    error: function (err) {
                        alert(err.d);
                    }
                });

            }
        }  
    </script>

[WebMethod]
    public static string Getstr(string cardid)
    {
        string JsonString = "NO";
        DataTable dt = GetNewDLTable(cardid.Trim());
        if (dt.Rows.Count > 0)
        {
            JsonString = JsonConvert.SerializeObject(dt);
            JsonString = JsonString.TrimStart('[').TrimEnd(']');
        }     
        return JsonString;
    }
Jason_Mao1 2018-01-19
  • 打赏
  • 举报
回复
应该是写法的问题,你把值先拿到然后再去传参 应该就没问题了 。你可以把那个变量放到一个容器或者控件中,AJAX 的时候再去获取一下 。希望能帮助到你。
书农 2018-01-18
  • 打赏
  • 举报
回复
aspx页面的返回只能是整个page(页),你的Getstr应该是该页的函数,这样肯定进入不了,这是别人写的,你可以实验一下 using System.Web.Services; //引入命名空间 [WebMethod] public static string SayHello() { return "Hello Ajax!"; }
-一个大坑 2018-01-18
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
用ajax调后台。
网上搜的这样写?但是进不去后台方法

 <script language="javascript" type="text/javascript">
        function CheckNumber(number) {
            var str = number.value.length;
            if (str >= '8') {
                $.ajax({
                    type: "post",
                    url: "RQ16.aspx/Getstr",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        if (data == 'NO') {
                            alert("查不到該卡信息!!");
                        }
                    },
                    error: function (err) {
                        alert(err);
                    }
                });

            }
        }  
    </script>
-一个大坑 2018-01-18
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
用ajax调后台。
用ajax提示 錯誤: 無法設定未定義或 Null 參考的屬性 'visibility'
全栈极简 2018-01-18
  • 打赏
  • 举报
回复
用ajax调后台。

62,046

社区成员

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

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

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

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