0

URLを収集するサイトがあります。完全なHTTPURLがテキストボックスに入力されます。パラメータで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のパス部分に特定の文字を使用することはできません。これは、スコット・ハンゼルマンが詳細を説明している素晴らしい記事です。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) {

        }
    });
});

contentType: 'application/json'また、間違っているAJAX呼び出しからを削除したことにも注意してください。JSONリクエストを送信していません。GETリクエストです。

于 2012-10-11T15:26:14.390 に答える
0

マップルートの呼び出しがデフォルトの前に来ることを確認してください。そうでない場合は、upload_linksアクションを使用してメディアコントローラーを呼び出そうとします。

于 2012-10-11T15:33:40.457 に答える