首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asmx往返json

asmx往返json
EN

Stack Overflow用户
提问于 2014-02-11 01:24:26
回答 1查看 168关注 0票数 1

我正在调用一个asmx,它返回由json (msg.d)正确使用的knockout.js。当我试图将相同的json返回给asmx时,我会收到错误消息。有什么明显的东西我遗漏了吗?. msg.d是一个格式良好的对象数组。

调用storeGroupCategories(msg.d);返回webservice错误..。

{“Message”:“无效JSON原语:Baby+Books。”

调用storeGroupCategories(msg);返回webservice错误..。

{“Message”:“无效JSON原语:d”。

WebService

代码语言:javascript
复制
public class kbo_inexcludecategories : WebService
{

    [WebMethod]
    public List<Group> GetIncludeExcludeJson()
    {
        var Groups =  new List<Group>();
        ShopAssistGroupHandler.getInExCategories(Groups);
        return Groups;
    }

    [WebMethod]
    public GroupGuid StoreGroupCategories(List<InExCategory> inExCategories)
    {
        var inExString = JsonConvert.SerializeObject(inExCategories);
        var returnGuid = DataHandler.SaveGroupJsonString(inExString);
        return new GroupGuid(returnGuid);
    }
}

相关的json ..。

代码语言:javascript
复制
var _url = "kbo-inexcludecategories.asmx/";
var _method = "GetIncludeExcludeJson";
var _jsonData = "{}";

function storeGroupCategories(groupCategories) {
    if(groupCategories != ""){
        showProgressBar("Storing Group Categories");
        getJsonData(_url, "StoreGroupCategories", groupCategories);
    }
}

function getGroupMatrix() {
    showProgressBar("Loading Group Categories");
    getJsonData(_url, _method, _jsonData);
}

function getJsonData(url, method, jsonData) {
    var myUrl = url + method;
    $.ajax({
        type: "POST",
        url: myUrl,
        data: jsonData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false, //blocks window close
        success: onSuccess,
        error: onError
    });
}

function onSuccess(msg) {

    // Hide the fake progress indicator graphic.
    hideProgressBar("");
    if(msg.d.hasOwnProperty("Guid")) {
        saveGroupGuid(msg.d);
    }
    else {
        storeGroupCategories(msg.d);
        //showGroupAccordion(msg.d);
        //OpenAdvancedDialog();
    }
}

json样本..。

代码语言:javascript
复制
"{\"groups\":[{\"__type\":\"group\",\"id\":1488,\"name\":\"Baby Books\",\"categories\":
[{\"__type\":\"groupcategory\",\"id\":152,\"name\":\"Activity Books\",\"value\":\"Included\"},
{\"__type\":\"groupcategory\",\"id\":167,\"name\":\"Bedtime and Dreams\",\"value\":\"Excluded\"}
EN

回答 1

Stack Overflow用户

发布于 2014-02-11 12:50:00

首先,我认为您需要这样传递您的json:

代码语言:javascript
复制
storeGroupCategories(msg.d)

但是在这个函数中,还需要为post创建有效的json参数,如下所示:

代码语言:javascript
复制
getJsonData(_url, "StoreGroupCategories", "{ inExCategories: " + groupCategories + " }");

我还会将您的签名更改为以下内容,以便组匹配您要传递的参数:

代码语言:javascript
复制
public GroupGuid StoreGroupCategories(List<InExCategory> groups)

如果您在网页方法中放置了一个断点,您将准确地看到即将出现的内容,并检查它是否是您所期望的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21691278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档