【发布时间】:2016-03-10 08:38:40
【问题描述】:
我正在从 javascript 中调用一个 C# 方法,该方法将返回一个 Json 字符串。我正在文本框中编写 JSON 值。 C# 方法将数据表转换为 JSON。到目前为止,它工作正常。
<script type="text/javascript">
function initialize() {
//returns "[{\"TAG1\":100,\"TAG2\":100}]" from method
var data = JSON.parse('<%=ConvertDataTabletoString()%>');
$('#TextBox1').val(data[0].TAG1);
$('#TextBox2').val(data[0].TAG2);
}
</script>
后面的代码
public string ConvertDataTabletoString()
{
string strcon = ConfigurationManager.ConnectionStrings["SqlCon"].ConnectionString;
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(strcon))
{
using (SqlCommand cmd = new SqlCommand(
@"SELECT TOP 1
DATATIME,
TAG1,
TAG2
FROM DATATABLE1
ORDER BY 1 DESC", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
}
}
但我想在特定的时间间隔(我的情况下为 3 秒)更新文本框值,以便在文本框中获取最新的数据表值 所以尝试了 setInterval 函数。但它不会更新最新值。
<script type="text/javascript">
setInterval(function initialize() {
//returns "[{\"TAG1\":100,\"TAG2\":100}]"
var data = JSON.parse('<%=ConvertDataTabletoString() %>');
$('#TextBox1').val(data[0].TAG1);
$('#TextBox2').val(data[0].TAG2);
},1000);
</script>
这个问题有什么解决办法吗?建议每 3 秒从 java 脚本调用一个方法吗?或任何其他方式在文本框中获取最新的数据表值?
【问题讨论】:
-
“我正在从 javascript 调用 C# 方法。” 不,你不是。当页面被请求时,您正在在服务器上运行一个 C# 方法,然后,一旦页面文本(其中嵌入了该方法的输出)到达客户端,浏览器就会运行读取嵌入在页面中的文本的 JavaScript 代码。
-
@T.J.Crowder 你有问题。完成它的可能解决方案是什么?
-
创建一个端点并使用ajax调用该方法,然后再次设置值。其他可能的解决方案,我真的不推荐,但我假设你正在使用 WebForms,是设置一个更新面板和一个计时器来刷新
标签: javascript c# jquery asp.net json