$.ajax не стреляет из devextreme
У меня есть сервис, который создан так.
service.vb
_ Открытый класс UmbrellaService наследует System.Web.Services.WebService Реализует IUmbrellaMobileService
Function GetCustomers() As List(Of Customers) Implements IUmbrellaMobileService.GetCustomers
Try
Dim Cust As List(Of Customers) = New List(Of Customers)
Dim SQLSTR As String = ""
SQLSTR = "Select Companies.Code, Companies.Name FROM Companies WHERE ISCustomer = '1'"
Dim ErrorMessage As String = ""
ErrorMessage = UmbrellaDataManagementObj.OpenConnection(SQLServer, UmbrellaDatabase, UserCode, UserPassword)
If ErrorMessage <> "" Then
System.Diagnostics.EventLog.WriteEntry("Umbrella Mobile Service", ErrorMessage & vbNewLine & UmbrellaDataManagementObj.ConnectionString, EventLogEntryType.Error)
WebOperationContext.Current.OutgoingResponse.StatusCode = 501
WebOperationContext.Current.OutgoingResponse.StatusDescription = ErrorMessage
Return Nothing
Else
Dim CustomerDetails As DataSet
CustomerDetails = UmbrellaDataManagementObj.GetDataSQL(SQLSTR)
If Not CustomerDetails Is Nothing Then
CustomerDetails.DataSetName = "Companies"
CustomerDetails.Tables(0).TableName = "Companies"
Dim CustomerTable As DataTable
Dim CustomerRow As DataRow
If CustomerDetails.Tables.Count > 0 Then
CustomerTable = CustomerDetails.Tables(0)
If CustomerTable.Rows.Count > 0 Then
Dim i As Integer
For i = 0 To CustomerTable.Rows.Count - 1
CustomerRow = CustomerTable.Rows(i)
Dim CC As New Customers
CC.Code = CustomerRow.Item("Code")
CC.Name = CustomerRow.Item("Name")
Cust.Add(CC)
Next i
' Serialize the results as JSON
Dim serializer As DataContractJsonSerializer = New DataContractJsonSerializer(Cust.GetType())
Dim Stream As MemoryStream = New MemoryStream
serializer.WriteObject(Stream, Cust)
' Return the results serialized as JSON
Dim json As String = Encoding.Default.GetString(Stream.ToArray())
' Return json
Return Cust
UmbrellaDataManagementObj.CloseConnection()
WebOperationContext.Current.OutgoingResponse.StatusCode = 200
WebOperationContext.Current.OutgoingResponse.StatusDescription = "OK"
End If
End If
'Return Cust
Else
System.Diagnostics.EventLog.WriteEntry("Umbrella Mobile Service", UmbrellaDataManagementObj.ErrorMessage, EventLogEntryType.Error)
WebOperationContext.Current.OutgoingResponse.StatusCode = 501
WebOperationContext.Current.OutgoingResponse.StatusDescription = UmbrellaDataManagementObj.ErrorMessage
Cust = Nothing
Return Nothing
End If
End If
Catch ex As Exception
System.Diagnostics.EventLog.WriteEntry("Umbrella Mobile Service", ex.Message, EventLogEntryType.Error)
WebOperationContext.Current.OutgoingResponse.StatusCode = 501
WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message
Return Nothing
End Try
Dispose()
End Function
Интерфейс выглядит так:
<ServiceContract()> _
Public Interface IUmbrellaMobileService
<OperationContract()> _
<WebInvoke(Method:="GET", BodyStyle:=WebMessageBodyStyle.Bare, ResponseFormat:=WebMessageFormat.Json)> _
Function GetCustomers() As List(Of Customers)
End Interface
Мой Datacontract выглядит так:
<DataContract()> _
Public Class Customers
Dim CompanyName As String
Dim CompanyCode As String
<DataMember()> _
Public Property Name() As String
Get
Return CompanyName
End Get
Set(ByVal value As String)
CompanyName = value
End Set
End Property
<DataMember()> _
Public Property Code() As String
Get
Return CompanyCode
End Get
Set(ByVal value As String)
CompanyCode = value
End Set
End Property
End Class
Теперь, когда я ввожу адрес http://agilesoft.dyndns.org/UmbrellaMobileService/GetCustomers я получаю массив JSON, возвращаемый следующим образом:
[{"Code": "001", "Name": "rainbow"}, {"Code": "009MAY", "Name": "AMG AUDIO: HIRE ACC."}]
Я пытаюсь отобразить эту информацию в своем приложении Devextreme. Это код для моего dxview:
<div data-options="dxView : { name: 'Customer', title: 'Customer' } " >
<div data-options="dxContent : { targetPlaceholder: 'content' } " >
<div data-bind="dxList: { items: listItems }">
<div data-options="dxTemplate: { name: 'item' } ">
<div data-bind="text: Name"></div>
</div>
</div>
</div>
</div>
Это код для файла JS:
UmbrellaMobile.Customer = function (params) {
var baseAddress = 'http://agilesoft.dyndns.org/UmbrellaMobileService/GetCustomers';
var listItems;
var viewModel = {
Customers: new DevExpress.data.CustomStore({
load: function () {
return $.ajax({
url: baseAddress,
crossOrigin: true,
jsonp: true,
type: 'GET',
data: '{}',
dataType: 'jsonp',
contentType: "application/json; charset=utf-8",
success: function (res) {
listItems: data;
console.log("success");
},
error: function (res) {
console.log("error");
}
});
}
})
};
return {
listItems: listItems,
viewModel: viewModel
};
};
Когда я запускаю это приложение в Firefox, я получаю сообщение "Нет данных для отображения"
Я попытался отладить код. Я установил точки останова и посмотрел на окно консоли для любых подсказок. Я не получаю никаких ошибок. Вызов ajax никогда не выполняется, или кажется, что его никогда не ударили
Я просто хочу отобразить информацию
Может кто-нибудь помочь увидеть, в чем проблема?
1 ответ
Хорошо, спасибо за чтение в любом случае.
Оказывается, проблема была в том, что мой сервис не поддерживает CORS