当前位置: 首页 > 面试题库 >

AJAX和Web Api发布方法-如何工作?

皇甫展
2023-03-14
问题内容

我正在尝试使用AJAX / Jquery和c#写入数据库。每当我将参数传递给C#代码时,它就会显示为null。我正在使用Visual
Studio创建控制器类时生成的默认模板。任何帮助,将不胜感激!

注意:这是我要致电的一项休息服务。(一个普通的ASP网站…不是MVC。此外,GET Rest API可以完美地工作。)

jQuery / AJAX:

        var dataJSON = { "name": "test" }

        $('#testPostMethod').bind("click", GeneralPost);
        function GeneralPost() {
            $.ajax({
                type: 'POST',
                url: '../api/NewRecipe',
                data:JSON.stringify(dataJSON),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json'
            });
        }

C#

    //If I remove the [FromBody] Tag then when I click the button this method is never called.
    public void Post([FromBody]string name)

    {

    }

编辑:

我已经稍微调整了代码,但仍然遇到相同的问题。概括地说,它正在加载POST方法,但它传递的是null。

C#

 public class RecipeInformation
    {
        public string name { get; set; }

    }

        public void Post(RecipeInformation information)

        {

        }

AJAX:

    var dataJSON = { information: { name: "test" } };

    $('#testPostMethod').bind("click", GeneralPost);
    console.log(dataJSON);
    function GeneralPost() {
        $.ajax({
            type: 'POST',
            url: '../api/NewRecipe',
            data: dataJSON,
            contentType: 'application/json; charset=utf-8',
        });
    }

问题答案:

对于简单类型,在服务器端:

public void Post([FromBody]string name)
{
}

在客户端,您只需定义是否要以json格式发送:

    var dataJSON = "test";

    $('#testPostMethod').bind("click", GeneralPost);
    function GeneralPost() {
        $.ajax({
            type: 'POST',
            url: '/api/NewRecipe',
            data: JSON.stringify(dataJSON),
            contentType: 'application/json; charset=utf-8',
            dataType: 'json'
        });
    }

如果要使其以复杂类型工作,则应从服务器端定义:

public class RecipeInformation
{
    public string name { get; set; }
}

public class ValuesController : ApiController
{
    public void Post(RecipeInformation information)
    {
    }
}

从客户端:

    var dataJSON = { name: "test" };

    $('#testPostMethod').bind("click", GeneralPost);
    function GeneralPost() {
        $.ajax({
            type: 'POST',
            url: '/api/NewRecipe',
            data: JSON.stringify(dataJSON),
            contentType: 'application/json; charset=utf-8',
            dataType: 'json'
        });
    }


 类似资料:
  • 问题内容: 我试图弄清楚如何将对象从表单发布到Web api服务。在我的控制器中,我定义了一个想要向其添加输入值的模型。 在我的输入字段中,我将它们绑定起来,例如: 在提交表单时,将这两个字段传递给我的服务并提交给我的WebApi 我已经通过两种方式尝试了此提交: 并且也如下,不声明参数 在webAPI中,我为帖子设置了一个方法 ReportLabel(dto)的定义如下: 我遇到的问题是,当我从

  • 工程发布方法 我们服务化后的工程都使用CRP 进行持续交付,我们将代码提交到Git 仓库之后即可进行自动编译,进行单元测试,JavaDoc 生成,以及点击 按钮实现发布。 本章节 将带领大家 一步一步 的配置进行发布的工作。

  • 问题内容: 我如何/可以将json对象传递给webapi控制器(POST),并且 没有 类可将其映射到,而是将其作为任意内容来处理? 因此,如果我像这样从客户那里传递消息: 数据是这样的: 我的控制器将能够解析吗?下次数据可能与该签名不匹配(例如: 在我的控制器中,我尝试过: 和: 和(因为这实际上是与mongo数据库一起使用): 但是看起来对象映射器想要映射到字符串以外的其他东西… 问题答案:

  • 问题内容: 我正在使用Angular $ resource将模型发布到webapi端点,但是Angular将数据发送到请求有效负载中,而不是JSON正文或表单参数中。结果,模型总是以null结尾。 我的API如下: 请求标头为: 和请求有效载荷: 如果我在Fiddler中进行测试,并在正文中发布相同的JSON字符串,则可以按预期正确填充模型。 是否有在这种情况下可以使用的内置模型活页夹,或者可以在

  • 我使用Angular$资源将模型发布到webapiendpoint,但Angular在请求负载中发送数据,而不是JSON正文或表单参数。因此,该模型最终总是为空。 我的API如下: 请求头包括: 和请求有效载荷: 如果我在Fiddler中进行测试,在主体中发布相同的JSON字符串,那么正如预期的那样,模型是正确填充的。 在这种情况下,是否有一个内置的模型绑定器可以工作,或者在我可以使用的地方预先构

  • 问题内容: 我已经检查了很多有关django AJAX表单的教程,但是每个教程都告诉您一种实现方法,它们都不是简单的,而且由于我从未使用过AJAX,所以我有点困惑。 我有一个名为“ note”的模型,它的模型形式,并且在模板内,我需要每次note元素发送stop()信号(来自jQuery Sortables)时django更新对象。 我当前的代码: views.py JavaScript: 当前代