如何使用“Fetch API”在javascript和c#之间传递数据?

时间:2018-04-01 02:23:21

标签: javascript c# json http fetch-api

我知道如何通过ajax在javascript和c#之间传递数据,现在我想知道fetch。

C#:

namespace WebApplication1
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    //[System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

的javascript:

fetch('http://localhost:62177/WebService1.asmx/HelloWorld')
    .then(response => {
        alert(response.json());
    })
    .then(response => {
        alert(response);
    })
它显示:

createuser.exe asks me to input a password

createuser.exe asks me to input a password

createuser.exe asks me to input a password

此网址的使用基于ajax。

我将网址更改为“http://localhost:62177/WebService1.asmx?op=HelloWorld”,显示:

createuser.exe asks me to input a password

我认为这是成功的反应,但是我没有收到任何信息并显示:

createuser.exe asks me to input a password

然后我修改了返回数据的方法,现在它是json-format:

C#:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public void HelloWorld()
{
    object JSONObj = JsonConvert.SerializeObject("Hello World");
    Context.Response.Write(JSONObj);
}

但没有变化。

我不知道怎么改变它。有人可以给我一些帮助吗?

1 个答案:

答案 0 :(得分:0)

首先需要确保您的服务器以JSON格式返回内容。但另外,在您的JS中,您必须返回 response.json()(或response.text() or whatever method is appropriate) in fetch`以便可以处理流,以便您可以获得响应在下一个功能中:

fetch('http://localhost:62177/WebService1.asmx/HelloWorld')
  .then(response => {
    return response.json();
  })
  .then(responseJSON => {
    alert(responseJSON);
  })

初始响应是一个响应流对象,它实际上还没有包含任何数据。