我有一个收集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) {
}
});
});
url 的路径部分不允许使用某些字符。这是一篇很好的文章,其中斯科特·汉塞尔曼提供了更多详细信息。我建议您link
作为查询字符串参数传递,而不是作为路由的一部分:
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) {
}
});
});
另请注意,我已经从 AJAX 调用中删除了错误的contentType: 'application/json'
。您没有发送任何 JSON 请求。这是一个 GET 请求。
确保您的地图路由调用位于默认值之前。 如果没有,它将尝试使用upload_links操作调用媒体控制器。