【发布时间】:2019-06-01 00:06:07
【问题描述】:
请按如下方式对 Web API 进行 AJAX 调用
$.ajax({
type: "POST",
url: "CustomerService.asmx/GetAccounts",
data: '{"custid":"' + cusID + '"}',
contentType: "application/json; charset-utf-8",
dataType: "json",
success: function (data) {
datatableVariable = $('#dtAccounts').DataTable({.......
这是我的 ASP.NET Web 方法
<WebMethod()>
Public Sub GetAccounts(ByVal custid As Integer)
Dim sql As String = "Select * from Accounts WHERE CustomerID =" & custid & " Order by ID"
Dim constr As String = ConfigurationManager.ConnectionStrings("flashCon").ConnectionString
Dim accs = New List(Of Accounts)()
Using con As New SqlConnection(constr)
Using cmd As New SqlCommand(sql)
cmd.CommandType = CommandType.Text
cmd.Connection = con
con.Open()
Dim dr = cmd.ExecuteReader()
If dr.HasRows Then
While dr.Read
Dim acc = New Accounts() With {
.custID = Convert.ToInt32(dr("CustomerID").ToString()),
.AccNum = dr("AccountNumber").ToString(),
.Descri = dr("Description").ToString(),
.CurrBalance = dr("CurrentBalance").ToString(),
.typOA = dr("TypeOfAccount").ToString(),
.Frozen = dr("Frozen").ToString()
}
accs.Add(acc)
End While
End If
End Using
End Using
Dim js = New JavaScriptSerializer()
Dim strResponse As String = js.Serialize(accs)
Context.Response.Write(strResponse)
End Sub
返回的 JSON 字符串响应如下所示,带有额外的奇怪 {"d":null} 值,我不知道它来自哪里
[{"custID":2,"AccNum":"KODSW00002","Descri":"","CurrBalance":0,"Frozen":false,"typOA":0}]{"d":null}
如果我使用Context.Response.Flush(),它会消失,然后我从浏览器Server cannot clear headers after HTTP headers have been sent. 收到另一个错误
请有人帮我解决这个问题,已经这样做了好几个星期了
非常感谢
【问题讨论】:
-
不要使用 JavascriptSerializer。它已被弃用。甚至微软也使用 Json.NET
-
我想知道你是否解决了这个问题。我在 ajax 调用的最后 json 响应中添加了相同的 {"d":null}。请告诉我 。谢谢。