![](/img/trans.png)
[英]How to pass String collection from controller to view in Spring MVC
[英]How to pass string from a View to a controller in mvc
此 JavaScript 代码用于将字符串从视图传递到控制器中的操作:
<script type="text/javascript">
$(document).on('click', 'a', function () {
$.ajax({
type: 'POST',
url: '/brandsOfACategory',
contentType: 'application/json; charset:utf-8',
data: JSON.stringify(this.id)
})
});
</script>
控制器中的brandOfACategory 代码:
public ActionResult brandsOfACategory(string id)
{
return View();
}
代码未按预期工作,因为 id 为空。
有人可以指导吗?
$.ajax({
type: 'POST',
url: '/brandsOfACategory',
contentType: 'application/json; charset:utf-8',
data: { 'id': id }
})
使用您当前的代码,在进行 ajax 调用时,请求负载只有一个字符串值。 例如,如果您单击的链接具有Id
属性值“link1”,它将发送以下字符串作为您的 ajax 调用的请求负载。(如果您打开开发工具->网络选项卡,您可以看到这一点)
"link1"
为了使模型绑定起作用,有效负载应具有键值格式,以便将值映射到与键具有相同值的参数。
由于它是一个简单的值,因此您不必将 JSON 字符串化版本和contentType
作为application/json
。 只需将 JS 对象作为data
发送。 确保您发送的 JavaScript 对象的键/属性名称与您的操作方法参数名称( id
)相同,并且它会起作用。
假设您的锚标记具有有效的Id
属性值,以便this.id
表达式返回有效的字符串值。
<a href="/SomeUrl" id="myId">MyLink</a>
在脚本中,您可能还想停止正常的点击行为,以防止页面导航到 href 属性值。
$(document).on('click', 'a', function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/brandsOfACategory',
data: { id :this.id }
}).done(function (res) {
console.log('result from ajax call',res);
})
});
这将发送像id=myId
这样的值作为请求的表单数据。 由于您没有明确指定 contentType,它将使用默认的application/x-www-form-urlencoded
如果用户点击的链接没有Id
属性,代码将不会发送任何值,因为this.id
将返回一个空字符串并且您在服务器端的参数值为 null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.