【问题标题】:serializing a json response using web service使用 Web 服务序列化 json 响应
【发布时间】:2013-04-25 07:09:54
【问题描述】:

由于我是淘汰赛、网络服务和所有这些东西的新手,我正在尝试使用淘汰赛 js 和网络服务填充下拉列表。

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

问题是返回的字符串是一个字符一个字符的。

任何帮助都会很有价值

谢谢!

【问题讨论】:

  • 所以这不起作用吗?您是否在 javascript 控制台中遇到任何错误?

标签: asp.net json web-services drop-down-menu knockout.js


【解决方案1】:

您的 Web 服务中的功能稍有不正确。您不需要自己进行 Javascript 序列化。因为您已将 Web 服务标记为 System.Web.Script.Services.ScriptService,所以响应的内容将自动序列化为 JSON。

方法签名应该是:

Public Function getPrinters1() As List(Of PrinterItem)

返回语句应该是:

Return values

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多