Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 淘汰赛未能发布表格,可';我不明白为什么_Javascript_Asp.net_Knockout.js_Typescript - Fatal编程技术网

Javascript 淘汰赛未能发布表格,可';我不明白为什么

Javascript 淘汰赛未能发布表格,可';我不明白为什么,javascript,asp.net,knockout.js,typescript,Javascript,Asp.net,Knockout.js,Typescript,我正在使用ASP.NET MVC和API开发一个页面,使用Knockout、Typescript,代码如下: 服务器代码: // POST: api/Empresas [ResponseType(typeof(Business))] public async Task<IHttpActionResult> PostBusiness(Business business) { if (!ModelState.IsValid) {

我正在使用ASP.NET MVC和API开发一个页面,使用Knockout、Typescript,代码如下:

服务器代码:

// POST: api/Empresas
    [ResponseType(typeof(Business))]
    public async Task<IHttpActionResult> PostBusiness(Business business)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.Businesses.Add(business);
        await db.SaveChangesAsync();

        return CreatedAtRoute("DefaultApi", new { id = business.Id }, business);
    }
这个例子是行不通的,因为没有测试的终点。 我的第一个问题是,为什么数据绑定不起作用? 第二,也是最重要的一点,我不断收到以下错误消息:


来自网页的消息 [对象] 解析器错误

SyntaxError:无效字符-无法创建业务 好啊 我不知道为什么会发生这种情况,我已经成功地对代码进行了多次更改。有什么想法吗

我使用的价值观: CNPJ=123.321.321-25 名称=测试业务 月限=20000 订阅开始日期=2014年1月1日 月合同数=24

提前谢谢

编辑:

我将方法上的签名改为如上所示,试图用“this”关键字解决范围问题。但仍然不起作用

新编辑:

createBusiness = (formElement) => {
        $(formElement).validate();
        if ($(formElement).valid()) {
            var formserialized = $(formElement).serialize();
            $.post('/Api/Empresas/', formserialized, null, "json")
                .done((result) => {
                    this.Business.Id = result.Id;
                    this.Business.Name(result.Name);
                    this.Business.CNPJ(result.CNPJ);
                    this.Business.MonthlyLimit(result.MonthlyLimit);
                    this.Business.SubscriptionStart(result.SubscriptionStart);
                    this.Business.MonthContractCount(result.MonthContractCount);
                    this.Business.MonthlyCurrent(result.MonthlyCurrent);
                })
                .fail((x, y, z) => {
                    alert(x + '\n' + y + '\n' + z + ' - failed to create business');
                });
        };
    }
这是最后一次更改,它现在起作用了,但正如您所看到的,我必须将This.BaseUri更改为“/Api/Empresas/”,由于“This”的范围,此更改是必要的,因此这是一个修复,但不是真正的。有什么想法吗?

改变

var formserialized = $(formElement).serialize();


你能给我们看看你请求中的JSON吗?这可以使用Chrome的开发工具(网络选项卡)检索。这是建议后请求正文的内容:“cnpj=123.321.123-58&name=Test+Business&monthlymit=20000&SubscriptionStart=01%2F01%2F2014&monthContractCount=24”看起来范围有问题,使用“this”,我确实在上面的编辑中更改了代码。Ok,请求正文不是有效的JSON,请将上面的行更改为var formserialized=JSON.stringify($(formElement.serializeArray());这是结果json,它没有正确地反序列化到上面的对象(结果是500)。[{“名称”:“cnpj”,“值”:“123.321.123-35”},{“名称”:“名称”,“值”:“测试公司”},{“名称”:“月限”,“值”:“20000”},{“名称”:“订阅开始”,“值”:“01/01/2014”},{“名称”:“月合同数”,“值”:“24”}]
createBusiness = (formElement) => {
        $(formElement).validate();
        if ($(formElement).valid()) {
            var formserialized = $(formElement).serialize();
            $.post('/Api/Empresas/', formserialized, null, "json")
                .done((result) => {
                    this.Business.Id = result.Id;
                    this.Business.Name(result.Name);
                    this.Business.CNPJ(result.CNPJ);
                    this.Business.MonthlyLimit(result.MonthlyLimit);
                    this.Business.SubscriptionStart(result.SubscriptionStart);
                    this.Business.MonthContractCount(result.MonthContractCount);
                    this.Business.MonthlyCurrent(result.MonthlyCurrent);
                })
                .fail((x, y, z) => {
                    alert(x + '\n' + y + '\n' + z + ' - failed to create business');
                });
        };
    }
var formserialized = $(formElement).serialize();
var formserialized = JSON.stringify($(formElement).serialize());