通过JavaScript将值从C#添加到DIV

Mad*_*er. 6 javascript c#

我的聊天脚本的最后一个模块是将值从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.