【问题标题】:Get ajax return value when calling aync method in c#在c#中调用异步方法时获取ajax返回值
【发布时间】:2016-06-05 17:37:30
【问题描述】:

在客户端,我使用这个 Jquery 函数通过 ajax 检索值:

$.ajax({

    type: "POST",
    url: "/my-page.aspx/checkout",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {

        alert(response.d);       

    },
    failure: function (response) {

        //alert(response.d);

    }

});

这是服务器端异步函数:

[System.Web.Services.WebMethod]
   public async static Task<string> checkout()

    {

        string r = await afrekenen();

        return r;
    }

我在 ajax 成功部分检索了一个值,但它属于“对象对象”类型。知道如何解决这个问题吗? Whit调试,方法'checkout()'的返回值是一个字符串...

【问题讨论】:

  • 试试console.log(response),告诉我们控制台的输出是什么。
  • alert() 只输出字符串。你传入一个对象,所以你得到该对象的字符串表示,即文字文本[Object object]
  • @Sven 但是你期望得到什么? complete 函数将 Object 作为其第一个参数,因此它显然不能是字符串 - api.jquery.com/jquery.ajax。它是一个jqXHR 对象。
  • 它可以是一个字符串@EugenePodskal,您可以在同一文档的附加说明中看到。
  • 我在 c# 中返回一个字符串,所以我希望在 javascript 中返回一个字符串 ;-)。当我使用这种方式处理普通的 c# webmethod(没有异步方法)时,我得到一个字符串作为返回值......但是这个异步方法返回一个类型为“Task”的对象,我不知道如何在javascript中获取返回对象的字符串值...

标签: javascript c# jquery .net ajax


【解决方案1】:

在这种情况下,异步返回一个类型的任务字符串 任务 T 包含一个“结果”属性来存储返回值。 因此,当您操作 json 对象时。这应该 console.log(response.d.Result); 或执行 console.log(JSON.stringify(response.d)) 并检查是否包含其他属性。

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多