【问题标题】:How do I send JSON to Asp.NET Webservice?如何将 JSON 发送到 Asp.NET Webservice?
【发布时间】:2011-07-03 16:27:09
【问题描述】:

我有一个使用 JSON2 库序列化的 javascript 对象。然后我试图将此 JSON 字符串传递给 ASP.net Web 服务。我已更改 web 方法以尝试几种不同的参数配置,但它们都导致“500 - 内部服务器错误”

谁能给我一个线索?

 function postDataToService(data) {
    $.ajax({
        url: "http://localhost:2686/DataCollectionService.asmx/StoreDataOut",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: data,
        success: showSuccessNotice,
        error: showFailureNotice,
        dataType: "json"
    });

} //postdatatoservice

function convertDataToJSON(jsObj) {

    return JSON.stringify({ list: jsObj });

} //converdatatojson

网络服务:

 [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]
public class DataCollectionService : WebService
{

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string StoreDataOut(List<string> list)
    {
        return "Complete";
        //model functionality
    }
}

【问题讨论】:

  • 您可以查看事件日志以获取异常的详细信息吗?或者使用 Fiddler 或 Firebug 在 500 响应中检查更多详细信息。

标签: javascript jquery asp.net ajax json


【解决方案1】:

我明白了。。

第 1 步:我将 JS 对象包装在另一个对象中,该对象包含与 web 方法中的参数名称匹配的属性。注意

周围的引号
return JSON.stringify({'json':jsObj});

第 2 步然后我用 JSON.stringify() 序列化了这个新的“包装器”对象。

第 3 步 Web 方法中的参数名称与发布的 json 属性名称匹配。类型为“对象”

 public string StoreDataOut(object json)
    {

    }

【讨论】:

    【解决方案2】:

    我使用了您提供的代码,并且能够毫无问题地发布到网络服务。

    一些问题:

    1. 数据是什么样的?
    2. 什么是 500 服务器错误?你可以直接浏览webservice而不会出错吗? http://localhost:2686/DataCollectionService.asmx/StoreDataOut
    3. 我注意到在您发送给您的数据中从未致电convertDataToJSON() 这是一个错字吗?如果不执行 ajax 发布,如下所示:


       $.ajax({
                url: "http://localhost:2686/DataCollectionService.asmx/StoreDataOut",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: convertDataToJSON(data),
                success: showSuccessNotice,
                error: showFailureNotice,
                dataType: "json"
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多