使用knocket、ajax和webapi传递数据和文件数组

本文关键字:数据 文件 数组 webapi knocket ajax 使用 | 更新日期: 2023-09-27 18:02:27

我已经创建了一个网页,其中包含大量数据和上传图像阵列的位置。最后,有一个带有发送方法的按钮,我想将我的所有数据和图像发送到Wep-Api控制器。我一直在努力传递这些图像,无论我尝试什么,它都会发送一个空数组。该页面不包含表单,因此我也无法尝试发送新的FormData对象。

按钮:

    <button class="btn btn-info" data-bind="click: fogBugzForm.send">Submit</button>

发送方式:

     this.send = () => {
            var data = {
                screenshots: this.fogBugzData().screenshots(), // knockoutObservableArray<string>
                otherStringData: this.fogBugzData().otherStringData()
            };
            if (this.fogBugzData.isValid()) {
                $.ajax({
                    type: "POST",
                    data: ko.toJSON(data),
                    url: "api/FogBuzReporter/ReportBug",
                    contentType: "application/json"
                });

Web API控制器:

    [HttpPost]
    public void ReportBug([FromBody] FogBuzModel bug)
    {
        ...
    }

    public class FogBuzModel
    {
       public string[] screenshots { get; set; }
       public string otherStringData {get;set;}
    }
  1. 如果我在控制台中记录来自该阵列的文件,它将充满有关该映像的信息
  2. 如果我记录ko.toJSON(数据(,则此数组为空

任何帮助都会很好:(

使用knocket、ajax和webapi传递数据和文件数组

self.data = [
         { Name: "Nokia Lumia", price: 10000, Image: "Images/Phones/lumia.jpg" },
         { Name: "Xiaomi MI3", price: 9999.99, Image: "Images/Phones/mi3.jpg" },
         { Name: "Apple Iphone", price: 50000, Image: "Images/Phones/iphone.jpg" },
         { Name: "HTC One", price: 40000, Image: "Images/Phones/htc.jpg" },
         { Name: "OnePlus One", price: 22990, Image: "Images/Phones/oneplus.jpg" },
         { Name: "Sony Xperia", price: 30000, Image: "Images/Phones/xperia.jpg" },
         { Name: "Galaxy Note4", price: 48000, Image: "Images/Phones/note.jpg" }
           ];
  $.ajax({
            url: "@Url.Action("WriteData","Home")",
                     type: "post",
                     data: JSON.stringify(self.data[0]),
                     dataType: "json",
                     contentType: "application/json",
                     success: function (question) {
                         bootbox.alert("Product saved successfully");
                     },
                     error: function () {
                         alert("Something went wrong");

                     }
        });

嗨,我看不出你在问题中写的有任何问题,但请再次检查。我使用这段代码将一些数据发送到Home控制器中的方法"WriteData">(此处使用MVC(。

WriteData看起来像:

[HttpPost]
    public string WriteData(ShopItems item)
    {
        Product ob = new Product();
        bool result=ob.Write(item);
        if (result)
            return "true";
        else return "false";
    }

和ShopItems:

public class ShopItems
{
    [Key]
    public int Id { get; set; }
    public int Type { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public double price { get; set; }
    public string Image { get; set; }
}

整个代码运行得非常完美。再试一次,请告诉我。