2010-09-13 32 views
2

我试着从我的ASP 2.0网站发送自定义HTML对象通过jQuery的AJAX我的web服务。但我无法让它工作。传递对象ASP:通过JSON NET的Webservice

当我删除ObjectHTML部件时,在我的webservice中一切都解析正确。但是当我添加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; 
} 

Webservice的代码:

[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; } 
    } 
} 
+0

什么是你所得到的错误编码您的JSON HTML?您的函数ObjectHTML(rawHtml)没有返回值。 – 2010-09-13 10:18:17

+0

我初始化对象与'VAR objectHtml =新ObjectHTML($(本)的.html());'这工作,我已经测试它和'objectHtml.html'有一个值。 – Martin 2010-09-13 10:35:36

回答

3

它看起来像你对我是你的服务器,并在脚本中的JavaScript类的让你的C#类之间有点困惑。

一件事,你可以做的是通过使用JSON.Stringify

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

这将确保该HTML编码为有效的JSON

+0

大声笑..我的坏,我没有从'ObjectHTML'到'string'看起来像它的工作原理改变我的C#对象:d – Martin 2010-09-13 11:06:34

+0

不错的哦。听到那个消息很开心 – 2010-09-13 11:15:23