我的聊天脚本的最后一个模块是将值从C#代码传递给JavaScript,JavaScript会将值发布到DIV.在我使用DataBinder之前,但直接使用它时,AJAX的更新面板会使用C#代码.现在,我需要一组Array值通过Timer Tick函数传递给JavaScript.如何使用C#将数组从C#传递给JavaScript <%= %>.我的代码的一部分如下.
protected void Timer1_Tick(object sender, EventArgs e)
{
if (MyConnection.State == System.Data.ConnectionState.Open)
{
MyConnection.Close();
}
MyConnection.Open();
OdbcCommand cmd = new OdbcCommand("Select message from messages where name=?", MyConnection);
cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = "human";
OdbcDataReader dr = cmd.ExecuteReader();
ArrayList values = new ArrayList();
while (dr.Read())
{
string messagev = dr[0].ToString();
// What should I do here?
}
MyConnection.Close();
}
Run Code Online (Sandbox Code Playgroud)
我不希望将值直接发送到DIV.首先它必须发送到JavaScript,然后它必须转到DIV.
有关更多说明
我需要C#从后端检索数据并将该数据从JavaScript传递到客户端(即JavaScript),它必须转发到DIV层.
jus*_*nne 13
我将建议JQuery方法并摆脱服务器端计时器.使用JQuery和JQuery.Timer插件:http://code.google.com/p/jquery-timer/在我看来你可以更轻松地做到这一点,它会更好地在客户端.
在您的aspx页面中,您有要显示输出的元素:
<span id="status" style="display:none"></span>
Run Code Online (Sandbox Code Playgroud)
还有一个对JQuery,JQuery.Timer.js的引用,然后是你的代码来调用c#web方法.
<script src="js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="js/jquery.timer.js" type="text/javascript"></script>
<script>
$(function () {
var timer = $.timer(getMessage, 10000);
timer.play();
})
function getMessage() {
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: 'message-service.asmx/getDBMessages',
data: "{}",
dataType: 'json',
success: getMessageSuccess,
error: getMessageError
})
}
function getMessageError(jqXHR, textStatus, errorThrown) {
$('#status').html(errorThrown).show();
}
function getMessageSuccess(data, textStatus, jqXHR) {
$('#status').html(data.d).show();
}
</script>
Run Code Online (Sandbox Code Playgroud)
我会使用Web服务进行服务器端db消息检索:
[WebService(Namespace = "http://site.com/service")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class contact_service : System.Web.Services.WebService
{
[WebMethod]
public string getDBMessages()
{
try
{
if (MyConnection.State == System.Data.ConnectionState.Open)
{
MyConnection.Close();
}
MyConnection.Open();
OdbcCommand cmd = new OdbcCommand("Select message from messages where name=?", MyConnection);
cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = "human";
OdbcDataReader dr = cmd.ExecuteReader();
ArrayList values = new ArrayList();
while (dr.Read())
{
string messagev = dr[0].ToString();
}
MyConnection.Close();
return messagev;
}
catch (Exception ex)
{
return ex.Message;
}
}
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.我创建了一个Web服务器(asmx)并创建了我的服务器端代码以返回一个字符串.在aspx标记中,我使用JQuery启动计时器10秒,然后使用.ajax帖子来轮询服务,检索消息并显示它.从我的角度来看,没有页面刷新和更少的hacky.
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |