0

この古い asmx サービス関数を完全に書き直しましたが、まだ JSON を返すことができません。ajax() を使用して datatype と contenttype を json に設定しても、XML が返されます。この関数を Jquery dataTables で使用しようとしています。そして、このような質問がたくさんあることは知っていますが、私が見つけたものはすべてC#であり、それらを適応させることができませんでした.

完全な asmx ファイルの最新のペーストビン: http://pastebin.com/swXKqgd4

新しいコード

   <WebMethod()> _
    <WebGet(ResponseFormat:=WebMessageFormat.Json)> _
    Public Function rptPendingServerRequests() As Generic.List(Of request)
        Dim _conn As SqlConnection = New SqlConnection(connectionString)
        Dim _dr As SqlDataReader
        Dim Sql As String = String.Empty
        Sql += "<My query here>"

        Try
            Dim _cmd As SqlCommand = New SqlCommand(Sql, _conn)
            _conn.Open()
            _dr = _cmd.ExecuteReader(CommandBehavior.CloseConnection)

            If _dr.HasRows Then
                Dim s As request
                Dim c As New Generic.List(Of request)
                While _dr.Read
                    s = New request
                    With s
                        .requestID = _dr("request_id")
                        .status = _dr("status")
                        .requester = _dr("req_by_user_id")
                        .assignee = _dr("user_id")
                        .nextAction = _dr("description")
                    End With
                    c.Add(s)
                End While

                Return c
            End If

        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            _conn.Close()
        End Try

    End Function

新しいクラス

<Serializable()> _
Public Class request
    Private _requestID As Integer
    Public Property requestID() As Integer
        Get
            Return _requestID
        End Get
        Set(ByVal value As Integer)
            _requestID = value
        End Set
    End Property

    Private _requester As String
    Public Property requester() As String
        Get
            Return _requester
        End Get
        Set(ByVal value As String)
            _requester = value
        End Set
    End Property

    Private _requestDate As Date
    Public Property requestDate() As Date
        Get
            Return _requestDate
        End Get
        Set(ByVal value As Date)
            _requestDate = value
        End Set
    End Property

    Private _status As Integer
    Public Property status() As Integer
        Get
            Return _status
        End Get
        Set(ByVal value As Integer)
            _status = value
        End Set
    End Property

    Private _assignee As String
    Public Property assignee() As String
        Get
            Return _assignee
        End Get
        Set(ByVal value As String)
            _assignee = value
        End Set
    End Property

    Private _nextAction As String
    Public Property nextAction() As String
        Get
            Return _nextAction
        End Get
        Set(ByVal value As String)
            _nextAction = value
        End Set
    End Property


End Class

オリジナルコード

<WebMethod()> _
<WebGet(ResponseFormat:=WebMessageFormat.Json)> _
Public Function rptPendingServerRequestsOld() As DataSet
    Dim connection As SqlConnection
    Dim command As SqlCommand
    Dim adapter As New SqlDataAdapter
    Dim ds As New DataSet
    Dim sql As String
    sql = ""
    sql += "<MY query here>"

    connection = New SqlConnection(connectionString)

    Try
        connection.Open()
        command = New SqlCommand(sql, connection)
        adapter.SelectCommand = command
        adapter.Fill(ds)
        adapter.Dispose()
        command.Dispose()
        connection.Close()
        Return ds

    Catch ex As Exception
    End Try
End Function

クライアント

        $('#report').dataTable({
            "bProcessing": true,
            "sAjaxSource": 'reportdata.asmx/rptPendingServerRequests'
        });
4

2 に答える 2