タイトルで既に述べたように、この PHP コードで得られるのと同じ結果を得るための JS 関数を探しています。
dirname(dirname(__FILE__))
前もって感謝します!
タイトルで既に述べたように、この PHP コードで得られるのと同じ結果を得るための JS 関数を探しています。
dirname(dirname(__FILE__))
前もって感謝します!
php dirname はローカル マシン上の apache サーバーで動作するため、可能ではないと思います。ファイルシステムにアクセスできます。しかし、javascript はファイルシステムでは動作しないブラウザ層で動作します。ajaxを使用して、必要に応じて結果を処理する必要があると思います。私はあなたにとって最善の解決策だと思います。
PHP にスクリプトを出力させることができます。はい、そうです。おそらく php で js ファイルを処理することはできません (サーバーを完全に制御していない限り)。しかし、それは問題ではありません。PHP が返すヘッダーと script タグの両方で、MIME タイプが正しいことを確認してください。そうすれば、独自のパスを含め、必要な値を PHP にスクリプトに挿入させることができます。
script.php で:
header("Content-type: text/javascript");
echo 'var myvar = '.$something;
//where $something can be $_SERVER['REQUEST_URI'], __FILE__ or whatever you need.
//You could even use information from session variables, or query the database.
//In fact, this way you can have GET parameters in your javascript.
//Make sure you are not creating a vulnerability with the exposed information.
//Then put the rest of the script as usual. You could even include it*.
*:含む
HTML の場合:
<script type="text/javascript" src="script.php"></script>
はい、MIME タイプを繰り返していることはわかっています。ブラウザの互換性を最大限に高めるために、この方法で行ってください。
__FILE__
ブラウザの Javascript に類似するものはありません。コードは、ロード元の URL に直接アクセスできません。ただし、ここでの回答のように、特定の仮定があれば、それを理解できます。
スクリプトの URL を取得したら (以下で呼び出される変数にあると仮定しscriptURL
ます)、祖父母の URL を見つけるように設定できます。これは URL では扱いにくい場合があるため、文字列の変更を開始する前に、URL に精通した Javascript に URL を解析させ、パス名コンポーネントだけを取得させるのがおそらく最も安全です。
var a = document.createElement('a')
a.href = scriptURL
var scriptPath = a.pathname
残念ながら、それは文字列操作にかかっています。これはやや不格好な解決策の1つです。
var components = scriptPath.split(/\//)
while (components.length > 0 && !components[components.length-1])
components.length -= 1;
var twoDirsUp = components.slice(0,components.length-2).join('/')
そして、逆にアンカー要素のトリックを使用して、結果を完全な URL に戻すことができます。
a.pathname = twoDirsUp;
var grandParentUrl = a.href
絶対 URL から必要なものを読み込んでみませんか?
コードのブロックを挿入している場合:ブラウザーは、あなたがいる場合など/my/script/to/load.js
に正しいファイルをロードします。yoursite.com
yoursite.com/a/b/c/d/e/f
次のようなコードを記述するためのソリューションが必要でした。
$("#div").load(ROOT_URL + "my/path/to/script.php");
解決策: PHP スクリプトは、必要なすべての JS ファイルから 1 つの JS ファイルを生成し、生成されたファイルの先頭に ROOT_URL を追加します。
$js = 'ROOT_URL = "' . ROOT_URL . '"; ' . $js;
file_put_contents("file.js", $js);
これで、ROOT_URL (PHP 構成ファイルで設定) を JS コードでも使用できるようになりました。お役に立てれば幸いです。
少し話題から外れますが、JavaScript の同様のものを取得したいだけの場合はdirname($_SERVER['REQUEST_URI'])
、次のことができます。
window.location.href.substr(0, window.location.href.length - window.location.href.split('/').pop().length)