在AJAX javascript中从ASHX获取数据

时间:2016-04-03 05:30:17

标签: javascript asp.net ajax ashx generic-handler

创建: 一个处理程序,它检查数据库是否有新的消息。

到目前为止我做了什么: 使用AJAX的Javascript每三秒运行一次处理程序。

我无法做到的事情:将ASHX处理程序的结果返回给AJAX javascript,以便在结果为真时执行回发。

  

这是Javascript:

    //handle message upload

        window.setInterval(function () {

            $.ajax({
                url: "handlecb.ashx",
                type: "POST",

                success: function (result) {
                    toastr.options = {
                        "closeButton": false,
                        "debug": false,
                        "newestOnTop": true,
                        "progressBar": false,
                        "positionClass": "toast-bottom-left",
                        "preventDuplicates": true,
                        "onclick": null,
                        "showDuration": "1300",
                        "hideDuration": "1300",
                        "timeOut": "5300",
                        "extendedTimeOut": "1000",
                        "showEasing": "swing",
                        "hideEasing": "linear",
                        "showMethod": "fadeIn",
                        "hideMethod": "fadeOut"
                    }
                    toastr.info('Online.');

                   if (result < 0) {
                        __doPostBack("<%= senbut.ClientID %>", "");
                        toastr.options = {
                            "closeButton": false,
                            "debug": false,
                            "newestOnTop": true,
                            "progressBar": false,
                            "positionClass": "toast-bottom-left",
                            "preventDuplicates": true,
                            "onclick": null,
                            "showDuration": "1300",
                            "hideDuration": "1300",
                            "timeOut": "5300",
                            "extendedTimeOut": "1000",
                            "showEasing": "swing",
                            "hideEasing": "linear",
                            "showMethod": "fadeIn",
                            "hideMethod": "fadeOut"
                        }
                        toastr.success('New message recieved.');
                    }


                },
                error: function (err) {
                    toastr.options = {
                        "closeButton": false,
                        "debug": false,
                        "newestOnTop": true,
                        "progressBar": false,
                        "positionClass": "toast-bottom-left",
                        "preventDuplicates": true,
                        "onclick": null,
                        "showDuration": "1300",
                        "hideDuration": "1300",
                        "timeOut": "5300",
                        "extendedTimeOut": "1000",
                        "showEasing": "swing",
                        "hideEasing": "linear",
                        "showMethod": "fadeIn",
                        "hideMethod": "fadeOut"
                    }
                    toastr.danger('Offline');

                }
            });
        }, 3000);
  

这是处理程序:

    <%@ WebHandler Language="VB" Class="handlecb" %>

    Imports System.Data
    Imports System.IO
    Imports System.Data.OleDb
    Imports System.Web.SessionState
    Imports System.Web.Security
    Imports System.Web

        Public Class handlecb
            Implements IHttpHandler, System.Web.Session

State.IRequiresSessionState

    Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ishaan Patel\Desktop\Paperhome\paperhome_data.accdb")


Dim cmd As OleDbCommand
Dim cmd2 As OleDbCommand
Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim dr As OleDbDataReader
Dim result As Integer

Public Sub ProcessRequest(ByVal context As HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
    Dim threadid As String
    If Not context.Session("chatsess") Is Nothing Then
        threadid = context.Session("chatsess")
        GoTo b
    Else
        GoTo a
    End If
    b:
    Dim thread As Integer
    thread = Convert.ToInt32(threadid)


    con.Open() 'checklastupdatedon
    cmd = New OleDbCommand("SELECT [last_updated_on] FROM [message_threads] WHERE ([message_threads].[thread_id] = " & thread & ")", con)
    cmd.Connection = con
    dr = cmd.ExecuteReader
    If (dr.Read) Then
        Dim fetched As Date = Convert.ToDateTime(dr("last_updated_on"))
        Dim old As Date = Convert.ToDateTime(context.Session("last_updated_on"))

        result = DateTime.Compare(old, fetched)
        con.Close()

        If result < 0 Then 'old fetched is earlier than timer fetched

            context.Session("last_updated_on") = fetched

        End If

    End If
    a:
End Sub

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
    Get




   Return result
    End Get
End Property
 End Class

任何帮助/建议表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

调用处理程序时缺少函数名称。 请更改代码如下:

url: "handlecb.ashx/ProcessRequest",
type: "POST",