javascriptからajaxでphpを呼び出す実験で

2015年10月9日 at 18:09

ブロックの開発で、javascriptからajaxでphpを呼び出す実験をしています。

AJAXで呼び出されるコード(xxxx.php)を、blocks/tools/xxxx.php のようにtoolsの下に置いて、

xxxx.phpの中身は以下で、呼び出されたらerrorログに、toolsと出力され、ok を返すだけのPHPです。
----
defined('C5_EXECUTE') or die("Access Denied.");

error_log("tools");
echo "ok";
---

var url = "'.$uh->getBlockTypeToolsURL($bt).'/xxxx.php";
で以下のパスを得て、
url = "/concrete5.7.5.2/index.php/tools/blocks/tomoac_form/xxxx.php";

$.ajax({
url: url,
  success: function( msg ) {
alert("success:" + msg);
},
});

として動作実験してみました。

結果は、alertで、success:undefined と表示され
エラーログには、なにも表示されません。
スクリプトのエラーもありません。

つまり、呼び出しができていません。
xxxx.phpを、toolsでなく、ホームディレクトリに、xxxx.phpを置いて、
url = "/concrete5.7.5.2/xxxx.php";
で呼び出すと、うまく実行してくれます。

やっぱり、$uh->getBlockTypeToolsURL($bt) で得るURL

"/concrete5.7.5.2/index.php/tools/blocks/tomoac_form/xxxx.php";

が正しくないのかなあと思うのですが、どうなんでしょう。

タグ:

Re: javascriptからajaxでphpを呼び出す実験で

2015年10月9日 at 18:25
本題からはずれますが、5.7ではtoolsの使用は非推奨です。たくさん残っていますが…。将来的には全てRouterに置き換わる予定です。

こちらの記事で紹介しています

http://notnil-creative.com/blog/archives/3550
 

Re: javascriptからajaxでphpを呼び出す実験で

2015年10月9日 at 18:47
そうなんですね。

ブロックでの使用例とか参考になるのがあれば教えていただけませんか。
 

Re: javascriptからajaxでphpを呼び出す実験で

2015年10月9日 at 19:41
これとかかな…
http://github.com/concrete5/concrete5/pull/1735#issuecomment-70296699
 

Re: javascriptからajaxでphpを呼び出す実験で

2015年10月9日 at 21:22
ルートの定義?は、以下に書くと書いてありますが
/application/bootstrap/app.php

/packages/<package name>/の配下で定義することもできるんですかね。
 

Re: javascriptからajaxでphpを呼び出す実験で

2015年10月12日 at 12:07
パッケージコントローラーの on_start() でも可能です。packages配下ではなく、何か独自のパスを定義した方が良いかと思います