尽管有大量有用的信息,但仍在努力寻找解决方案。
我有以下Javascript函数正在向我的控制器发送AJAX调用。
var ajax = new XMLHttpRequest();
var posts = document.getElementsByClassName('postLink');
var sendstr = "";
for (var i = 0; i < posts.length; i++) {
sendstr += ',';
sendstr += posts[i].attributes.getNamedItem('onmouseup').value.substr(9, 1);
}
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
var posts = JSON.parse(ajax.responseText);
addPostToList(posts.Title, posts.Description, posts.postID);
}
}
ajax.open('POST', '@Url.Action("SAR", "posts")', true);
ajax.setRequestHeader('Content-type', 'text/plain');
ajax.setRequestHeader('Content-length', sendstr.length);
ajax.setRequestHeader('Connection', 'close');
ajax.send(encodeURIComponent(sendstr));
控制器如下......
[HttpPost]
public ActionResult SAR(string r)
{
var s = Request.QueryString[0];
return Content(Post.JSONSerialize());
}
我已经尝试了许多不同的数据类型作为参数,但仍然没有收到任何使用...我还尝试过Request.Param,request.queryString,request.Form和其他一些“解决方案”我在网上找到它,它只传递一个逗号分隔的整数列表到控制器,存储为一个字符串。如何在将此值发送到控制器时读取该值?
〜我不想要JQuery或JS Framework解决方案,我想要一个原生的Javascript解决方案。
答案 0 :(得分:6)
1.-使用JSON作为您的内容类型。
2.-您要发回的字符串必须与您在控制器上预期的参数名称相匹配。
将您的发送号码更改为以下格式:
//Where r is the name of your parameter on the controller.
var sendstr = '{"r":"STRING YOU WANT TO RETURN"}';
然后将您的ajax配置更改为
ajax.open('POST', '@Url.Action("SAR","Controller")', true);
ajax.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
ajax.setRequestHeader('Content-Length', sendstr.length);
ajax.send(sendstr);
我希望这适合你:)