0

この投稿に関連して、得られた結果を理解しようとしました (以下の ajax 呼び出しを参照)。

AJAX リクエストの相対 URL

以下の [WORKS] および [FAILS] と注釈が付けられたコメントは、機能した URL と失敗したさまざまな URL を示しています。上記の投稿ではドキュメント ベースの URL についてのみ説明したので、コントローラー内のメソッドがドキュメントに対応し、コントローラーがフォルダーに対応するという類推を試みました。ただし、以下の結果はその類推を裏切っています。

CAS は、Web サイトのルートから実行される MVC アプリケーションです。サブジェクトはコントローラーです。Index、GetSubject、および RegisterSubject は、サブジェクト コントローラーのメソッドです。

これらの URL のすべてが機能するわけではありません。しかし、なぜある人が他の人がしないのかを説明することはできません。

編集: UrlHelpers。ルールを理解したい。MVC タイプの URL を解決するためのルールは何ですか: http://[domain]/[MVC App]/[Controller]/[Method]/ [params] ここで、params は [p1/p2/ のようなものです。. ]。

パターンが見えません。以下に示すように、いずれかのメソッドが呼び出されると、ドキュメント url = [ http://localhost/cas/Subject/Index]になります。

var ajaxService = (function () {

    var ajaxGetJson = function (method, jsonIn, callback, errorCallback, controller) {
        var ajaxUrl = getSvcUrl(method, controller);
        var docUrl = document.URL; // at his point document url =  http://localhost/cas/Subject/Index

        //[WORKS] when ajaxUrl = ../GetSubject/359143 where 359143 is the id of Subject in database
        //        correctly resolves to http://localhost/cas/Subject/GetSubject/359143

        //[FAILS] when ajaxUrl = ../RegisterSubject 
        //        resolves to http://localhost/cas/RegisterSubject  <-- notice Subject controller is missing.

        //[FAILS] when ajaxUrl = /RegisterSubject --> resolves to http://localhost/RegisterSubject

        //[WORKS] when ajaxUrl = "RegisterSubject" or "RegisterSubject/
        //        resovles to http://localhost/cas/Subject/RegisterSubject

        //[FAILS] when ajaxURL = "GetSubject"/359143"
        //        resolves to http://localhost/cas/Subject/Index/GetSubject/359143

        if (method === "RegisterSubject") { //workaround for the above failure
            ajaxUrl = "http://localhost/cas/Subject/RegisterSubject";
    }

    $.ajax({
        url:  ajaxUrl, //getSvcUrl(method, controller),
        type: "GET",
        data: ko.toJSON(jsonIn),
        dataType: "json",
        contentType: "application/json",
        success: function (json) {
            callback(json);
        },
        error: function(json) {
            errorCallback(json);                
        }});
    }

    // other AJAX types omitted

    return {
        ajaxGetJson: ajaxGetJson;
    };
}
4

0 に答える 0