【问题标题】:jQuery post data to webapijQuery 将数据发布到 webapi
【发布时间】:2018-11-22 02:15:21
【问题描述】:

我的问题有两个:1.当从客户端向我的 webapi 控制器发送数据时,名称必须相同吗?

如果我有这样的模型:

public class Donation
{
    public string DonorType { get; set; }
    //etc
}

但是我网页上的表格是这样的:

<div class="button-group grid-x align-center" id='sz-gift-source-group'>
    <a class="hollow button cell small-6" id="sz-donate-individual" sz-data-toggle-button required>A family or individual</a>
    <a class="hollow button cell small-6" id="sz-donate-corporate" sz-data-toggle-button>A business or company</a>
</div>

我的事件处理程序是这样的:

$('form button[type=submit]').on('click', () => {
    const donation = getDonation();

    $.post(
        '//localhost:61012/api/Donation',
        $("#sz-donate-form").serialize(),
        (data) => {
            console.log(`post succeeded:[${JSON.stringify(data)}]`); 
        })
        .fail((data) => {
            console.log(`post failed:[${JSON.stringify(data)}]`);
        })
        .always((data) => {
            console.log(`post complete:[${JSON.stringify(data)}]`);
        });

    return false;
});

其次,我需要做什么才能将数据从表单获取到 Donation 对象?

我看过的教程似乎都错过了我的第一个问题,我想知道的部分原因是我这里的表格是否不完整......

【问题讨论】:

  • 请注意,serialize()form 元素内的输入中检索数据。如果您希望在请求中发送 text() 或您所显示的 a 元素的任何其他属性,那么这是行不通的

标签: javascript jquery typescript asp.net-web-api


【解决方案1】:

请注意,您必须将您的 inputs 放在 form 标记中,例如:

<form action="/" method="post" id="sz-donate-form">
    <input name="DonorType" type="text">
</form>

注意当你使用serialize() 表单数据时输入名称序列化 属性!

name属性应与Donationproperty相同。

我认为你使用了 typescript

您的 javascript 代码应该是正确的。

请在 webapi 中发布您的操作代码以指导它。

【讨论】:

  • 确切地说,这不是答案,但它引导我走上正确的道路 - 基本上,它看起来像一个表单输入,但这些元素没有设置作为任何地方的任何类型的输入......另外,“名称属性应该与捐赠类属性相同”的答案是我正在寻找的......
猜你喜欢
  • 1970-01-01
  • 2018-07-12
  • 2019-01-30
  • 1970-01-01
  • 2016-02-03
  • 2018-02-06
  • 2013-01-23
  • 1970-01-01
  • 2014-03-19
相关资源
最近更新 更多