AJAX 未向 Web API 控制器发送数据

AJAX Not Sending Data to Web API Controller

提问人:Asbah Qadeer 提问时间:7/17/2017 更新时间:7/17/2017 访问量:54

问:

如果输入变量 (a) 未设置为 Null,以下 Ajax 代码甚至不会触发我的操作。

阿贾克斯代码:

var ab = "Chocolate Smoothies ya know?";

$("#customerSubmit").submit(function (e) {

    e.preventDefault();

    $.ajax({
        url: "/api/Booking/lander",
        method: "post",
        data: { a: ab }
    })
});

以下是我的控制器代码:

[HttpPost]
public void lander(string a)
{
    System.Diagnostics.Debug.WriteLine(a);
}

当我不将其设置为 null 时,收到的输入为 null。

触发断点时的屏幕截图:

enter image description here

我使用了类型/方法/等。似乎没有任何效果

更新:

我什至尝试了以下方法,但没有用:

enter image description here

enter image description here

C# AJAX API 模型-视图-控制器 Web

评论


答:

0赞 el vis 7/17/2017 #1

根据我的经验,当您使用 Post 方法时,最好使用一些类包装器,例如:

public class StringInfo
{
     public string Value {get; set; }
}

public void lander(StringInfo info)

在你的 javascript 中

data: { value: ab }

评论

0赞 Asbah Qadeer 7/17/2017
它没有用......我复制了你的控制器和 Ajax 代码。没有效果
0赞 Asbah Qadeer 7/17/2017
此外,我得到了这个:无法加载资源:服务器响应状态为 405(不允许方法)
-1赞 codegidi 7/17/2017 #2

在 C# 上使用 WebAPI 发布简单类型时,它会自动将其绑定到 Url,因此将控制器中的 [FromBody] 更改为 [FromURI]

或者,您可以将其作为变量名称为空的复杂类型传递

var ab = 'Chocolate Smoothies ya Know?';
$.ajax({
    url:"/api/Booking/lander", 
    data: {'': ab}
});

评论

0赞 Asbah Qadeer 7/17/2017
无法加载资源:服务器响应状态为 405(不允许使用方法)