【问题标题】:how to use fetch api in javascript to get response from C# Web method?如何在 javascript 中使用 fetch api 从 C# Web 方法获取响应?
【发布时间】:2019-02-21 09:28:20
【问题描述】:

Java 脚本代码

var AllTeams;

function GetAllTeams_ProductSamplePerClass() {
    return fetch("../Pages/Product.aspx/GetAllTeams", {
        method: 'POST',
        dataType: 'MyTeam'
    }
    ).then(response => {
        AllTeams = response.json();
        console.log('success getall teams', response);
        console.log('teams', AllTeams);
        return AllTeams;

    }).catch(error => {
        console.log('Error in getall teams', error);   
    })
}

aspx 文件中的 C# 方法:

[WebMethod]
public static List<MyTeam> GetAllTeams()  
{
    TeamServiceClient TeamSvc = new TeamServiceClient("wsHttpBinding_TeamWsEndPoint");

    try
    {
        return TeamSvc.GetAllTeams();
    }
    catch
    {
        TeamSvc.Abort();
        return null;
    }
    finally
    {
        TeamSvc.Close();
    }
}

【问题讨论】:

  • 您遇到的具体问题是什么?你有错误吗?出乎意料的结果?请描述问题。
  • 在开发工具中在控制台成功 getall 团队中获取此响应 {type: "basic", url: "localhost:3737/Admin/Pages/Product.aspx/GetAllTeams", redirected: false, status: 200, ok: true, ...} body : (...) bodyUsed : false headers : Headers {} ok : true redirected : false status : 200 statusText : "OK" type : "basic" url : "localhost:3737/Admin/Pages/Product.aspx/GetAllTeams" proto : Response
  • “成功”通常并不表示存在问题。您是否在某个地方观察到了实际问题? (需要注意的一点是,then() 回调中的 return 语句实际上并没有做任何事情,你不需要这样做。)
  • 当我添加 response.json() 在控制台中给我这个错误: 团队 Promise__proto__: Promise[[PromiseStatus]]: "rejected"[[PromiseValue]]: SyntaxError: Unexpected token
  • 听起来响应可能不是 JSON。在浏览器的调试工具中,服务器的实际响应是什么?

标签: javascript c# asp.net fetch webmethod


【解决方案1】:

经过一天的搜索并不断尝试和测试,我发现导致 fetch api 无法到达服务器的问题是这一行不在 javascript 标头中:{ '接受':'应用程序/json', '内容类型': '应用程序/json;字符集=utf-8' } 这使得响应不像以前那样是 html 响应,而是使响应对象来自 web 方法 感谢@David 的帮助 我搜索并找到解决方案的链接: Fetch API call causes new Asp.net session

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2022-08-05
    • 2020-02-01
    • 2017-01-04
    • 2017-07-09
    • 2022-08-19
    相关资源
    最近更新 更多