JQuery $.getJSON在请求URL后添加了一个问号

3

我在一个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);
        });

这将创建一个请求,例如:http://localhost:48610/Person/GetPerson/?id=6。为什么会有一个问号?我收到了服务器错误参数字典包含非空类型'System.Int32'的参数'id'的空条目....

如果我手动进行请求而没有问号,那么它就可以正常工作。

6个回答

4

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);
    });

当您的控制器实际上接受MVC路由之外的额外值时,请使用参数列表替换null。例如,您的控制器可能是:

    public function GetPerson(string id, string type) {
         // your code
    }

你可以这样调用它:
    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);
    });

1

getJSON执行GET请求,不会将变量发布到URL,而是将它们添加到查询字符串中。请改用$.post

 $.post('/Person/GetPerson/', { id: $('#id').val() }, function(data) {
        $('#collar').text(data.collarNumber);
        $('#name').text(data.Name);
        $('#email').text(data.EmailAddress);
    }, 'json');

或者当您的语法为页面是/Person/GetPerson/123时,只需将id附加到URL中,并在数据参数的位置放置{ }


你在数据参数中忘记了一个结束大括号。 - rmontagud

1

它将你在getJSON中指定的userID作为查询字符串传递,这是一种传递变量的标准方式。当解析传入的URL请求时,你能否支持查询字符串在服务器端的处理?


1

你正在进行一个GET请求,并将一个名称/值对作为第二个参数传递,这是要在请求中指定的data参数。jQuery会自动添加?,因为它是必需的,以便正确发送名称/值对。

如果您不想发送任何数据,请尝试将第二个参数传递为null

http://api.jquery.com/jQuery.getJSON/


0

这就是getJSON函数的工作原理。以下代码可以正常运行:

 $.getJSON('/Person/GetPerson/'+userID,, function(data) {
        });

0

因为GET参数是通过问号与文件分开的。

如果您不想要问号,可以直接将数据附加到URL上,并传递一个空数据对象(null也可能有效)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接