0

我有一个收集 URL 的网站。将完整的 HTTP URL 输入到文本框中。在参数中传递 URL 时出现 400 错误。它适用于常规文本。

使用 jQuery,如何在我的应用程序中传递完整的 URL?

MVC 路由配置:

 routes.MapRoute("UploadLinks", "media/upload_links/{link}/{albumID}",
                       new { controller = "Media", action = "WebLinkUpload" });

控制器动作:

 public ActionResult WebLinkUpload(string link, string albumID){}

jQuery AJAX 调用:

$('#btnUploadWebUpload').click(function () {
        $.ajax({
            type: "GET",
            url: "/media/upload_links/" + encodeURIComponent($('#txtWebUrl').val().trim()) + "/" + currentAlbumID,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {

            }
        });
    });
4

2 回答 2

2

url 的路径部分中不允许使用某些字符。这是一篇很好的文章,其中 Scott Hanselman 提供了更多细节。我建议您传递linkas 查询字符串参数,而不是作为路由的一部分:

routes.MapRoute(
    "UploadLinks", 
    "media/upload_links/{albumID}",
    new { controller = "Media", action = "WebLinkUpload" }
);

接着:

$('#btnUploadWebUpload').click(function () {
    $.ajax({
        type: 'GET',
        url: '/media/upload_links/' + currentAlbumID,
        data: { link: $('#txtWebUrl').val().trim() },
        success: function (result) {

        }
    });
});

另请注意,我已从contentType: 'application/json'错误的 AJAX 调用中删除了 。您没有发送任何 JSON 请求。这是一个 GET 请求。

于 2012-10-11T15:26:14.390 回答
0

确保您的地图路线调用出现在默认值之前。如果没有,它会尝试使用 upload_links 操作调用媒体控制器。

于 2012-10-11T15:33:40.457 回答