Я вызываю метод C# из javascript, который возвращает строку Json. и я пишу значения JSON в текстовых полях. Метод C# преобразует таблицу данных в JSON. Пока он работает правильно.Вызов метода C# в интервале времени из javascript
<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сек) для получения последних DataTable значения в текстовых полях Так пытались 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>
Есть ли решение этой проблемы? Целесообразно ли вызывать метод из java-скрипта каждые 3 сек? или любым другим способом получить последнее значение таблицы данных в текстовом поле?
* "Я звоню метод C# от javascript. "* Нет, это не так. Вы запускаете метод C# ** на сервере **, когда запрашивается страница, а затем позже, когда текст страницы (с выходом встроенного в нее метода) отправляется клиенту, браузер выполняет код JavaScript который читает текст, встроенный в страницу. –
@ T.J.Crowder У вас возникла проблема. Каково возможное решение для его решения? – RJ10
Создайте конечную точку и вызовите метод с помощью ajax, затем снова установите значения. Другое возможное решение, которое я честно не рекомендую, но я предполагаю, что вы используете WebForms, заключается в установке панели обновления и таймера на нем для обновления –