加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET:jQuery AJAX’data’param问题

发布时间:2020-12-16 00:28:21 所属栏目:asp.Net 来源:网络整理
导读:我一直在使用这段代码的问题,我花了最近3个小时的时间挖掘,并试图找到答案。由于我没有成功,我只会发布代码,并询问我的Web服务应该有哪些参数来处理这个请求: var args = [{ key: 'myId',value: 'myValue' },{ key: 'myOtherId',value: 'myOtherValue'}
我一直在使用这段代码的问题,我花了最近3个小时的时间挖掘,并试图找到答案。由于我没有成功,我只会发布代码,并询问我的Web服务应该有哪些参数来处理这个请求:
var args = [{ key: 'myId',value: 'myValue' },{ key: 'myOtherId',value: 'myOtherValue'}];
var dataToSend = { name: 'fooId',value: 'fooValue',args: args };
$.ajax({
type: 'POST',url: 'fooURL',data: dataToSend,contentType: 'application/json; charset=utf-8',dataType: 'json',success: OnSuccess,error: OnError
});

现在,哪一种签名我应该能够得到我的“dataToSend”?

我试过了:

[WebMethod,ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Foo(string name,object value,List<Args> args)
{
    return "OK";
}

public class Args
{
    public string key { get; set; }
    public object value { get; set; }
}

[WebMethod,object[] args)
{
    return "OK";
}

并且

[WebMethod,ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Foo(dataToSend dataToSend)
{
    return "OK";
}

public class dataToSend
{
    public string name { get; set; }
    public object value { get; set; }
    public List<Args> args = new List<Args>();

}
public class Args
{
    public string key { get; set; }
    public object value { get; set; }
}

解决方法

尝试将数据作为字符串传递,而不是对象,即:
$.ajax( {
    ...
    data : '{ a: 2,b: 3 }',...
} );

这样做的原因是,如果您将对象指定为数据,则jQuery使用查询字符串格式对数据进行序列化,而服务器则期待直接使用JSON格式。

尽管告诉jQuery使用JSON作为数据类型,但这似乎只与结果相关,而不是发送到服务器的请求有效性。

其他一切对我来说都是正确的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读