3

タイトルで既に述べたように、この PHP コードで得られるのと同じ結果を得るための JS 関数を探しています。

dirname(dirname(__FILE__))

前もって感謝します!

4

7 に答える 7

6

php dirname はローカル マシン上の apache サーバーで動作するため、可能ではないと思います。ファイルシステムにアクセスできます。しかし、javascript はファイルシステムでは動作しないブラウザ層で動作します。ajaxを使用して、必要に応じて結果を処理する必要があると思います。私はあなたにとって最善の解決策だと思います。

于 2012-11-03T05:14:52.790 に答える
1

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 タイプを繰り返していることはわかっています。ブラウザの互換性を最大限に高めるために、この方法で行ってください。

于 2012-11-05T02:19:01.967 に答える
1

__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
于 2012-11-05T02:22:15.163 に答える
1

絶対 URL から必要なものを読み込んでみませんか?

コードのブロックを挿入している場合:ブラウザーは、あなたがいる場合など/my/script/to/load.jsに正しいファイルをロードします。yoursite.comyoursite.com/a/b/c/d/e/f

于 2012-11-05T02:23:29.397 に答える
1

次のようなコードを記述するためのソリューションが必要でした。

$("#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 コードでも使用できるようになりました。お役に立てれば幸いです。

于 2012-11-05T02:04:57.330 に答える
0

少し話題から外れますが、JavaScript の同様のものを取得したいだけの場合はdirname($_SERVER['REQUEST_URI'])、次のことができます。

window.location.href.substr(0, window.location.href.length - window.location.href.split('/').pop().length)
于 2015-07-07T16:19:17.500 に答える