jQuery/Ajax-如何使用单参数将纯文本传递到C#(PUT方法)?
我有一个应用程序,它使用$.ajax调用C#中名为/api/show的web api url。当我运行项目时,我无法将第二个代码体上的字符串值设置为null以外的任何值。我显式地将showsList传递给服务器控制器中的put方法(showsList是一个示例,“show1,show2,show3”),它是一个逗号分隔的纯文本值 如何将逗号分隔的文本放入第二个代码段上只有一个参数的PUT方法中 为此,我是否需要完全避免使用$.ajax?如果是这样,我需要确定需要调用哪个jQuery方法 客户端代码: 服务器控制器放置方法代码:jQuery/Ajax-如何使用单参数将纯文本传递到C#(PUT方法)?,jquery,asp.net-web-api,Jquery,Asp.net Web Api,我有一个应用程序,它使用$.ajax调用C#中名为/api/show的web api url。当我运行项目时,我无法将第二个代码体上的字符串值设置为null以外的任何值。我显式地将showsList传递给服务器控制器中的put方法(showsList是一个示例,“show1,show2,show3”),它是一个逗号分隔的纯文本值 如何将逗号分隔的文本放入第二个代码段上只有一个参数的PUT方法中 为此,我是否需要完全避免使用$.ajax?如果是这样,我需要确定需要调用哪个jQuery方法 客户端代
//放置api/show/5
公共void Put([FromBody]字符串值)
{
字符串email=Request.Headers.GetValues(“email”).FirstOrDefault().Replace('{','').Replace('}','').Trim();
DAL.DAL.addshowsbyseremail(电子邮件,值);
}
我不确定$.ajax
在这里是否最有意义-考虑到您没有从服务器接收回数据<代码>$。post可能更有意义。但是,$.ajax
应该可以工作
您当前如何设置它有几个问题。首先,URL似乎不正确地指向您的方法。它应该是url:“/api/show/Put”
,然后类型:
应该是类型:POST
——这并不指向方法,而是表示浏览器应该执行HTTP POST。如果在方法中接收到null,请尝试显式声明数据:
参数:数据:{value:showList}
-请注意,参数名值
,对应于方法的参数
function addShows() {
var selectedShows = [];
var showList = "";
selectedShows = getSelectedShows();
showList = selectedShows.join(", ");
$.ajax({
url: "/api/show/Put",
type: "POST",
dataType: "text",
data: {value:showList},
beforeSend: function (req) {
req.setRequestHeader('email', $("#email").val());
},
success: function (status) {
window.location.reload(true);
}
});
}
然后,您的方法应该如下所示:
[HTTPPost]
public void Put(string value)
{
string email = Request.Headers.GetValues("email").FirstOrDefault().Replace('{', ' ').Replace('}', ' ').Trim();
DAL.DAL.addShowsByUserEmail(email, value);
}
让我知道这是否解决了您的问题。结果证明我必须以json格式发送showList。更具体地说是{“list”:showList}。我没有使用data:JSON.stringify(showList),但我添加了一个名为UserShows的模型,该模型的属性类型为string,名为list,以匹配JSON键。我确实使用了JSON而不是文本,但使用了$.ajax。关键的修改是在我的项目中添加一个具有属性公共字符串列表{get;set;}的模型,该列表与json键同名。
function addShows() {
var selectedShows = [];
var showList = "";
selectedShows = getSelectedShows();
showList = selectedShows.join(", ");
$.ajax({
url: "/api/show",
type: "PUT",
dataType: "json",
data:JSON.stringify(showList),
beforeSend: function (req) {
req.setRequestHeader('email', $("#email").val());
},
success: function (status) {
window.location.reload(true);
}
});
}
function addShows() {
var selectedShows = [];
var showList = "";
selectedShows = getSelectedShows();
showList = selectedShows.join(", ");
$.ajax({
url: "/api/show",
type: "PUT",
dataType: "json",
data:JSON.stringify(showList),
beforeSend: function (req) {
req.setRequestHeader('email', $("#email").val());
},
success: function (status) {
window.location.reload(true);
}
});
}