jquery ajax呼び出しで相対パスを指定するには、いくつかの解決策が必要です../のようなものを使用しています。どんな提案も高く評価されます。
コード
$.ajax({
type: 'get',
url: '../../MyPage/getDetails',
success: function (data) {
if (data > 0) {
指定したパスは、Webサイトの階層が同じである限り、絶対的な相対パスです。
ajax呼び出しで指定したURLは、常に2つのフォルダーを上に移動し、MyPageで定義されているgetDetailsメソッドを呼び出します。
これはちょっとしたハックですが、あなたはクライアント側なので:)
このコードはいくつかの仮定をしています - スクリプトタグがmyscript.js
存在するように
ページに次のようなマークアップがあるとします:\
<script src='../js/myscript.js' type="text/javascript"></script>
<div>hiya</div>
では、script タグを使用して、そこからベース URL を取得します :)
使用できる Util クラスを作成し、get base url メソッドを追加して、その値をアラートします。
ここの作業コピー: http://jsfiddle.net/SmCLy/
function Util() { /*...Nothing...*/
}
Util.getBaseURL = function() {
//<summary>
// Returns the application base URL (well, a URL that is
// equivalent to such - it may have some "backtracking",
// i.e. "../" at
// the end of the URL to simulate the root...)
//</summary>
// 1) Find the script include for this JavaScript file:
var scriptElements = document.getElementsByTagName("script"),
getScriptPathFragmentPosition = Util.getBaseURL._getScriptPathFragmentPosition,
getScriptPathFragmentPositionResult = getScriptPathFragmentPosition(scriptElements, "js/myscript.js"),
posScriptPathFragment = getScriptPathFragmentPositionResult.posScriptPathFragment;
// 2) Create the "base" URL by taking the current URL,
// stripping the page from the end, and appending
// sufficient "../" sequences to
// construct the equivalent of the application's root URL:
var scriptElementSrcLower = getScriptPathFragmentPositionResult.scriptElementSrcLower;
var backPathToRoot = ((scriptElementSrcLower !== "") ? scriptElementSrcLower.substring(0, posScriptPathFragment) : "");
var currentPath = location.href;
var currentPathWithoutPage;
var PAGE_TOKEN = ".aspx";
var posPageToken = currentPath.toLowerCase().indexOf(PAGE_TOKEN);
if (posPageToken > -1) {
var trimmedPath = currentPath.substring(0, posPageToken + PAGE_TOKEN.length);
currentPathWithoutPage = trimmedPath.substring(0, trimmedPath.lastIndexOf("/") + 1);
} else {
currentPathWithoutPage = currentPath.substring(0, currentPath.lastIndexOf("/") + 1);
}
return (currentPathWithoutPage + backPathToRoot);
};
Util.getBaseURL._getScriptPathFragmentPosition = function(scriptElements, scriptPathFragment) {
var scriptElementsIndex = (scriptElements.length - 1),
scriptElementSrc = "",
scriptElementSrcLower = "",
posScriptPathFragment = -1;
while (scriptElementsIndex >= 0) {
scriptElementSrc = scriptElements[scriptElementsIndex].getAttribute("src");
if (typeof(scriptElementSrc) != "undefined" && scriptElementSrc !== null && scriptElementSrc !== "") {
scriptElementSrcLower = scriptElementSrc.toLowerCase();
posScriptPathFragment = scriptElementSrcLower.indexOf(scriptPathFragment);
if (posScriptPathFragment >= 0) {
break;
}
}
scriptElementsIndex--;
}
var result = {
posScriptPathFragment: posScriptPathFragment,
scriptElementSrcLower: scriptElementSrcLower
};
return result;
};
alert(Util.getBaseURL());
SO、あなたのページでできること:
var myajaxUrl = getBaseURL()+"MyPage/GetDetails";