2013-05-01 2 views
0

Поскольку я новичок в нокауте, веб-сервисах и обо всем этом, я пытаюсь заполнить выпадающий список с помощью нокаута js и веб-службы.Сериализация json-ответа с помощью веб-службы

код Html является

<body> 
    <select data-bind="options: printers"></select> 
</body> 

и Javascript блок

<script> 
    $(document).ready(function() { 
     var viewModel = { 
      printer: ko.observable(), 
      printers: ko.observableArray() 
     } 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json", 
      url: "PapersDDLs.asmx/getPrinters1", 
      data: "{}", 
      dataType: "json", 
      success: function (response) { 
       viewModel.printers(response.d); 
      } 
     }); 

     ko.applyBindings(viewModel); 
    }); 
</script> 

веб-сервис я называю это

Imports System.Web 
Imports System.Web.Services 
Imports System.Web.Services.Protocols 
Imports System.Collections 
Imports System.Collections.Generic 
Imports System.Collections.Specialized 
Imports System.Web.Script.Serialization 

<System.Web.Script.Services.ScriptService()> _ 
<WebService(Namespace:="http://tempuri.org/")> _ 
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ 
Public Class PapersDDLs 
    Inherits System.Web.Services.WebService 

    <WebMethod()> _ 
    Public Function getPrinters1() As String 
     Dim db As New DataClassesDataContext 
     Dim printers = From p In db.Printers Select p 
     Dim values As New List(Of PrinterItem) 
     For Each pr In printers 
      values.Add(New PrinterItem(pr.BrandModelName, pr.Id.ToString())) 
     Next 
     db.Dispose() 
     Return New JavaScriptSerializer().Serialize(values) 
    End Function 

    End Class 

Проблема заключается в том, что строка, которая возвращается в сделанный персонажем по характеру.

Любая помощь будет полезной

Спасибо!

+0

Так это не работает? Вы получаете какие-либо ошибки в консоли javascript? – PatrickSteele

ответ

0

Функция в вашем веб-сервисе немного некорректна. Вам не нужно выполнять сериализацию Javascript самостоятельно. Поскольку вы отметили веб-службу как System.Web.Script.Services.ScriptService, содержимое ответа будет автоматически сериализовано как JSON.

Метод подпись должна быть:

Public Function getPrinters1() As List(Of PrinterItem) 

и возвращение заявление должно быть:

Return values 
Смежные вопросы