Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asmx赢得';t返回JSON_Json_Vb.net_Asmx - Fatal编程技术网

asmx赢得';t返回JSON

asmx赢得';t返回JSON,json,vb.net,asmx,Json,Vb.net,Asmx,我已经完全重写了这个旧的asmx服务函数,但仍然无法让它返回JSON。它返回XML,即使我使用ajax()并将数据类型和内容类型设置为json。我试图将此函数用于Jquery数据表。我知道有很多这样的问题,但我发现所有这些问题都是C#,我无法适应它们 完整asmx文件的最新粘贴bin: 新代码 <WebMethod()> _ <WebGet(ResponseFormat:=WebMessageFormat.Json)> _ Public Functi

我已经完全重写了这个旧的asmx服务函数,但仍然无法让它返回JSON。它返回XML,即使我使用ajax()并将数据类型和内容类型设置为json。我试图将此函数用于Jquery数据表。我知道有很多这样的问题,但我发现所有这些问题都是C#,我无法适应它们

完整asmx文件的最新粘贴bin

新代码

   <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
<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

因为您是从JS而不是从

<WebGet(ResponseFormat:=WebMessageFormat.Json)>

使用


属性。另外,不要忘了用

<ScriptService()> 

属性。

更改此行

Public Function rptPendingServerRequests() As Generic.List(Of request)


调用将返回什么?XML。即使我使用Jquery的Ajax方法并传递JSON内容和数据类型,我仍然得到XML,仍然得到相同的结果。这是完整的asmx文件:我不熟悉DataTable,但是您能确保您的AJAX请求是通过POST完成的吗?如果没有,请尝试对WebMethod属性进行更多修改:
我正在进行的测试AJAX调用使用POST。添加UseHttpGet没有帮助。
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> 
<ScriptService()> 
Public Function rptPendingServerRequests() As Generic.List(Of request)
Public Function rptPendingServerRequests() As String.