Dav*_*ale 3 asp.net-mvc jquery json http
我在ASP.NET MVC Web应用程序上有以下JSON请求代码:
var userID = 'id=' + $('#namesList').val();
$.getJSON('/Person/GetPerson/', userID, function(data) {
$('#collar').text(data.collarNumber);
$('#name').text(data.Name);
$('#email').text(data.EmailAddress);
});
Run Code Online (Sandbox Code Playgroud)
这会创建一个请求,例如:http:// localhost:48610/Person/GetPerson /?id = 6.为什么那里有问号?我得到服务器错误参数字典包含非可空类型'System.Int32'的参数'id'的空条目....
如果我手动提出请求没有问号,它可以正常工作.
根据定义,URL中的参数在"?"之后.在MVC中,路由参数实际上不是参数(对于Web浏览器),而是路径的一部分.因此,正确的代码将是:
var userID = $('#namesList').val();
$.getJSON('/Person/GetPerson/' + userID, null, function(data) {
$('#collar').text(data.collarNumber);
$('#name').text(data.Name);
$('#email').text(data.EmailAddress);
});
Run Code Online (Sandbox Code Playgroud)
当控制器实际接受不在MVC路由中的额外值时,将null替换为参数列表.例如,您的控制器可能是:
public function GetPerson(string id, string type) {
// your code
}
Run Code Online (Sandbox Code Playgroud)
你会这样称呼它:
var userID = $('#namesList').val();
var params = "type=XXX";
$.getJSON('/Person/GetPerson/' + userID, params, function(data) {
$('#collar').text(data.collarNumber);
$('#name').text(data.Name);
$('#email').text(data.EmailAddress);
});
Run Code Online (Sandbox Code Playgroud)