将JSON数据传递给WebApi而不是修改数据库

时间:2017-08-23 22:37:02

标签: jquery asp.net json asp.net-web-api

我通过j查询调用传递数据,我在数据库上有一个自动递增的密钥ID,所以我在脚本上创建了一个变量来模仿它。

webApi上的方法显示了一个成功的请求,但运行数据库更改的代码在我运行断点时没有被命中。

我不知道这是否与Jquery或MVC有关,所以我要标记两者。

证明网络后api的请求被点击,http://imgur.com/a/TZSA4

WebApi路线:

ListIterator<String[]> outputArrayOfValues = ListOfArrayOfValues.listIterator();
while(outputArrayOfValues.hasNext())                                                    {

    // add this line to get the values from the current item in the iterator
    String[] rowValues = outputArrayOfValues.next();

    for(String num : rowValues)                                                    
    {
        //  change this line to not print a carriage return
        System.out.print(num + " ");                                  
    }

    // print the carriage return here
    System.out.println();
}

脚本:

config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute (
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

WebApi帖子:

<script >
    var id = 29;
    function populateTab() {

    }

    var addvisible = document.getElementById("btnshowadd");
    $("#addpostform").hide();
    addvisible.onclick = function () { $("#addpostform").show() };
    $("#hideadd").click(function () {

        var postObject = {
            ID: id,
            Title: $("#PostTitle").val(),
            Body: $("#PostBody").val(),
            Image: $("#PostImage").val(),
            DateTime: Date.now()
        };


        jQuery.ajax({
            type: "POST",
            data: JSON.stringify(postObject),
            url: "../api/posts",
            contentType: "application/json"

        });
    id++;
});

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法: 不传递id的任何值,让值为null。

由于您提到它是一个自动增量ID,因此数据库应该处理ID创建部分。

让我知道它是否成功。

还可以试试(伪代码,请不要复制粘贴),

result = db.savechanges();

if(result&gt; 1){

//重定向代码

}否则{

//重试逻辑或其他东西

}

在结果处设置一个断点,看看intellisense是否为您提供了有关错误的更多信息

答案 1 :(得分:0)

我遇到的主要问题是跟随Jeylani的答案之后的日期我发现不应该指定ID,因为它是自动递增的,而且我需要使用新的 Date()。toLocaleString() 而不是 date.now();