相关疑难解决方法(0)

如何使用Json.Net从我的WCF休息服务(.NET 4)返回json,而不是字符串,用引号括起来?

更新2010年10月19日 我知道我刚才问过这个问题,但这些答案中显示的解决方法难以令人满意,对许多人来说,这仍然是一个常见的问题.WCF只是不灵活.我创建了自己的开源C#库,用于在没有WCF的情况下创建REST服务.检查restcake.netrest.codeplex.com以获取有关所述库的信息. 结束更新

更新8/2/2012 ASP.NET Web API(以前是WCF Web API,REST WCF的替代品)默认情况下 使用Json.NET END UPDATE

DataContractJsonSerializer无法处理许多情况下是Json.Net在正确配置(具体周期)处理就好了.

一个服务方法可以返回一个特定的对象类型(在这种情况下是一个DTO),在这种情况下DataContractJsonSerializer将使用它,或者我可以让该方法返回一个字符串,并自己使用Json.Net进行序列化.问题是当我返回一个json字符串而不是一个对象时,发送到客户端的json用引号括起来.

使用DataContractJsonSerializer,返回特定的对象类型,响应是:
{"Message":"Hello World"}

使用Json.Net返回json字符串,响应是:
"{\"Message\":\"Hello World\"}"

我不想在客户端上使用eval()或JSON.parse()结果,如果json以字符串形式返回,用引号括起来就是我必须要做的.我意识到这种行为是正确的; 这不是我想要/需要的.我需要原始的json; 当服务方法的返回类型是对象而不是字符串时的行为.

那么,我如何让我的方法返回一个对象类型,但不能使用DataContractJsonSerializer?我怎么能告诉它使用Json.Net序列化器呢?

或者,有没有直接写入响应流?所以我可以自己退回原始的json?没有包装报价?

这是我的人为例子,供参考:

[DataContract]
public class SimpleMessage
{
    [DataMember]
    public string Message { get; set; }
}

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class PersonService
{
    // uses DataContractJsonSerializer
    // returns {"Message":"Hello World"}
    [WebGet(UriTemplate = "helloObject")] …
Run Code Online (Sandbox Code Playgroud)

rest wcf serialization json.net

40
推荐指数
2
解决办法
6万
查看次数

Ajax GET请求ASP.NET页面方法?

我本周遇到的一种情况:我们有一个jQuery Ajax调用,它返回服务器以获取数据

$.ajax(
{
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: fullMethodPath,
    data: data,
    dataType: "json",
    success: function(response) {
        successCallback(response);
    },
    error: errorCallback,
    complete: completeCallback
});
Run Code Online (Sandbox Code Playgroud)

fullMethodPath是指页面上静态方法的链接(比方说/MyPage.aspx/MyMethod).

public partial class MyPage : Page
{
    // snip

    [WebMethod]
    public static AjaxData MyMethod(string param1, int param2)
    {
        // return some data here
    }
}
Run Code Online (Sandbox Code Playgroud)

这个工作,没问题.

一位同事试图用类型为"GET"的那个替换这个电话.它坏了,我不得不解决它.最后,我回到POST,因为我们需要快速修复,但它一直在困扰我,因为在这种情况下,语义上GET更"正确".

据我所知,jQuery将数据中的对象转换为查询字符串:/MyPage.aspx/MyMethod?param1=value1&param2=value2但我可以得到的只是页面的内容MyPage.aspx.

这只是Page方法的"功能",还是有办法使GET请求有效?

asp.net ajax jquery post get

11
推荐指数
1
解决办法
9404
查看次数

从jquery ajax GET将多个参数传递给.asmx

HTML

<a onclick="testGetParametersDynamic2();">fill in names and check it out</a>
<br />
<p>Enter First Name</p>
<input id="myFirstName" type="text" />
<br />
<p>Enter Last Name</p>
<input id="myLastName" type="text" />
<div id="outputGET3"></div>
Run Code Online (Sandbox Code Playgroud)

C#

[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true)]
public string testGetParametersDynamic(string firstName, string lastName)
{
    string fullName = firstName + lastName;

    return fullName;
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了多种输入数据的方法bc我认为这就是问题所在

尝试1

function testGetParametersDynamic2()
    {
        $.ajax(
        {
            post: 'GET',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":' +
                    $('#myLastName').val() + '"}',
            url: 'UtilitieService.asmx/TestGetParametersDynamic',
            success: function …
Run Code Online (Sandbox Code Playgroud)

c# jquery

10
推荐指数
1
解决办法
3万
查看次数

如果ContentType不是JSON,我可以从.asmx Web服务返回JSON吗?

我想使用ajax和jquery将表单发布到.asmx webservice,并将Webservice中的值作为JSON返回.

我正在使用ASP.NET 4.0.我知道为了从Web服务返回JSON,需要设置以下内容:(1)dataType:"json"(2)contentType:"application/json; charset = utf-8",(3)type:"POST" (4)将数据设置为某物.我测试了这个并且它工作正常(即我的webservice将数据作为JSON返回)如果所有**四都设置**.

但是,让我说在我的情况下我想做一个标准的表单帖子,即test1 = value1&test2 = value2所以contentType不是JSON但我想要回JSON {test1:value1}.这似乎不起作用,因为contentType是" application/x-www-form-urlencoded "而不是" application/json; charset = utf-8 ".

谁能告诉我为什么我不能这样做?我必须明确发送JSON以获取JSON,但如果你不使用JSON(即发布urlencoded contenttype),那么webservice将返回XML.

非常感谢任何见解:)

jquery json web-services response.contenttype

4
推荐指数
1
解决办法
2万
查看次数

使用Remote的JQuery验证将空数据发布到webservice

我正在使用JQuery Validation插件.我正在使用远程选项拨打我的网络服务来检查公司名称是否存在.Web服务仅接受JSON数据.

我将数据从我的表单中的公司输入字段传递到Web服务,如下所示:

数据:"{'company':'"+ $('#Company').val()+"'}"

但这总是为公司返回一个空白值,因此响应为{'company':''}即正确的JSON但缺少公司输入字段值.

任何人都可以解释为什么我总是在这里得到一个空白值?

谢谢你的帮助,Ciaran

validation jquery plugins json

2
推荐指数
1
解决办法
3067
查看次数