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