jquery www.example. com MVC控制器从 AJAX 发送时接收空数组

643ylb08  于 2023-04-29  发布在  jQuery
关注(0)|答案(2)|浏览(184)

我已经做了好几天了。这应该很简单。为什么不管用?我的URL看起来像这样:
https://example.com/photos/gallery/c15905d7-8216-4e81-ac15-2fafd10b49e8 / 80515cad-070a-4d61-a7e3-f2dbb1968c9d
我想发送c15905d7-8216-4e81-ac15-2fafd10b49e880515cad-070a-4d61-a7e3-f2dbb1968c9d到我的控制器。
以下是我尝试过的最后一件事(共20748次尝试):

function setViewed() {
    var pathArray = window.location.pathname.split('/');

    $.ajax({
        type: "PUT",
        url: '/api/Customers/',
        data: { 'pathArray': pathArray },
        dataType: "json",
        traditional: true,
        success: function (response) {
            alert(response.msg);
        }
    });
}

控制器:

[HttpPut]
public IHttpActionResult SeenIt(List<String> pathArray)
{

    // Don't update if it's the client looking at a customer's gallery:
    if (pathArray[3] == User.Identity.GetUserId()){
        return Json(new
        {
            msg = String.Format("ClientID: {0} | CustomerID: {1}", pathArray[3], pathArray[4])
        });
    }

    var customer = db.Customers.FirstOrDefault(c => c.CustomerID == Guid.Parse(pathArray[4]));
    customer.Accessed = true;

    db.SaveChanges();
    return Json(new
    {
        msg = String.Format("ClientID: {0} | CustomerID: {1}", pathArray[3], pathArray[4])
    });
}

我的数组总是null。有没有更好/更简单/更有效的方法来做到这一点?一个有用的?谢谢!

xe55xuns

xe55xuns1#

选项1

AJAX 调用中,不需要用{} Package 列表字符串。简单使用;

data:pathArray

选项二

创建一个类,作为绑定属性的模型。

public class ReceiveModel{
   public List<string> pathArray {get;set;}
}

然后在你的控制器里

public IHttpActionResult SeenIt(ReceiveModel model)
{
   ...
}
gr8qqesn

gr8qqesn2#

我知道这是一篇老文章,但是对于任何 AJAX 来发布与直接JS相比的人来说,我发现添加这个很有帮助:内容类型:“application/json;字符集=utf-8”,

相关问题