.net 通过ajax获取的数据,用JS 把获取到的数据append到.aspx页面的<table>下能成功显示,但是在.aspx.cs代码中使用this.tableid.Rows却无法获取到页面上显示出来的数据以及行数。
aspx页面中是
<table>
<tr>
<th>123</th>
<th>123</th>
<th>123</th>
</tr>
</table>
str = "";
这样的,js里使用 $("#tableid").append(str);在前端页面能成功显示出来,但是在.aspx.cs代码中使用this.tableid.Rows却无法获取到页面上显示出来的数据以及行数, 只能获取到写在页面上的<th>的数据,也就是第一行
请问各位这个问题怎么解决
在aspx.cs只能取到服务器控件生成的代码,你用ajax请求的数据向table添加Html这是客户端浏览器的操作,table里并不是服务器生成的代码,所以服务器端肯定得不到这些数据。
要想得到把浏览器ajax请求的数据在aspx.cs中取到的方法是这样:
1。建 一个hidden控件 如:<input id="jsondata" type="hidden" runat="server"/>
2.把ajax请求到的数据存放到$("#jsondata").val(ajaxdata)中。。。
3。在aspx.cs中用jsondata.value取值
语法问题啦,JS是JS,aspx是aspx。一种做法是在后端CS文件里,按页面ajax调用的方式重新调一遍接口,另外一种是把页面接口返回的数据序列化存在一个变量里,然后赋值给aspx页面上隐藏的文本控件,再通过this.文本控件.text获取字符串,再把字符串反序列化一下得到表格数据。
-------------分割线-------------
第一种比较合适,第二种很别扭,aspx页面有些老了,我看你想使用this.tableid.Rows去获取数据就不由得想到拖控件了.... 刚我说的第二种不知道行不行,好久了知识点有些遗忘。所以建议第一种,怎么拿数据,就怎么在后端取数据。如果本身就是自身项目里的接口(或者只是某个方法),就更简单了,重新调用一下即可。
这当然是获取不到的。
后缀.aspx的table一般是这样的