【问题标题】:Passing objects to ASP :NET Webservice through JSON通过 JSON 将对象传递给 ASP :NET Webservice
【发布时间】:2010-09-13 10:03:09
【问题描述】:

我试图通过 jQuery ajax 将自定义 HTML 对象从我的 ASP 2.0 网站发送到我的 web 服务。但我无法让它工作。

当我删除 ObjectHTML 部分时,我的 web 服务中的所有内容都被正确解析。但是当我添加 ObjectHTML 部分时出现错误。

是否可以发送自定义 javascript 对象?

function SavePage() {
    var rowCount = $('#pageArea div.object').length;
    var i = 1;

    var objects = "[";
    $('.object').each(function(index) {
        var objectHtml = new ObjectHTML($(this).html());
        objects += "{'ObjectID': " + "'" + $(this).attr('objectid') + "', 'ObjectIndex': '" + $(this).attr('objectindex') + "', 'ObjectHTML': " + objectHtml + "}";
        if (i == rowCount)
            objects += ""
        else
            objects += ",";
        i++;
    });
    objects += "]";

    alert("{'objects': " + objects + "}");

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/Folder/ObjectService.asmx/SavePage",
        data: "{'objects': " + objects + "}",
        dataType: "json",
        success:
            function(msg) {
                alert("Success!");
            },
        error:
            function(XMLHttpRequest, textStatus, errorThrown) {
                alert("Error Occured: " + errorThrown);
            }
    });
}

function ObjectHTML(rawHtml) {
    this.Html = rawHtml;
}

网络服务代码:

[WebMethod(EnableSession = true)]
public string SavePage(List<PageObject> objects)
{
    return "";
}

public class PageObject
{
    private string _objectid, _objectindex;
    private ObjectHTML _objectHtml;

    public string ObjectID
    {
        get { return _objectid; }
        set { _objectid = value; }
    }

    public string ObjectIndex
    {
        get { return _objectindex; }
        set { _objectindex = value; }
    }

    public ObjectHTML ObjectHTML
    {
        get { return _objectHtml; }
        set { _objectHtml = value; }
    }
}

public class ObjectHTML
{
    private string _Html;

    public string Html
    {
        get { return _Html; }
        set { _Html = value; }
    }
}

【问题讨论】:

  • 您遇到的错误是什么?您的函数 ObjectHTML(rawHtml) 没有返回值。
  • 我用var objectHtml = new ObjectHTML($(this).html()); 初始化对象这行得通,我已经测试过了,objectHtml.html 有一个值。

标签: asp.net asp.net-ajax jquery


【解决方案1】:

在我看来,您对服务器上的 C# 类和脚本中的 Javascript 类感到有些困惑。

您可以做的一件事是使用 JSON.Stringify 为 JSOn 编码您的 html

var myObject = JSON.stringify({ 
    ObjectId: $(this).attr('objectid'), 
    ObjectIndex: $(this).attr('objectIndex'), 
    ObjectHtml: $(this).html()
});

这将确保 html 被编码为有效的 JSON

【讨论】:

  • 大声笑.. 我的错,我没有将我的 C# 对象从 ObjectHTML 更改为 string 看起来它可以工作:D
猜你喜欢
  • 2017-01-15
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
相关资源
最近更新 更多