月別アーカイブ: 2016年9月

ajaxで取得したjavascriptを適用させる方法

ajaxでデータと一緒にjavasciptを取得して、実行したかった。
サーバー側でfunctionを動的に生成して、その関数をjavascriptで実行したかったんです。

最初は、htmlでscriptタグを出力しておいて、

$('script_area').html(script);

みたいにして出力してみたものの当然実行されず。
evalしても駄目。

google先生で探し回ったところ、appendChildで出力されれば適用されることがわかった。

以下はサンプルコード。

            function add_script(script) {
              var s = document.createElement("script");
              s.type = "text/javascript";
              s.innerHTML = script;
           
              var ele = document.getElementById("display_area");
              ele.appendChild(s);
            }
           
            function display_script() {
                var parm = {
                    url : $('#url').val(),
                    mode : $('input[name=mode]:checked').val()
                };
                var url = "/test";
                $.ajax({
                    url: url,
                    data: parm,
                    dataType: 'json',
                    success : function(json) {
                            add_script(json.scripts);
                    },
                    error : function (XMLHttpRequest, textStatus, errorThrown) {
                        console.log(XMLHttpRequest); // XMLHttpRequestオブジェクト
                        console.log(textStatus); // status は、リクエスト結果を表す文字列
                        console.log(errorThrown); // errorThrown は、例外オブジェクト
                    }
                });
            }

Vagrant+apache2+php-fprm環境にxdebugをインストールする

今の現場で使用しているVagrant環境で、xdebugのインストールに手間取ったのでメモ。

<環境>
Vagrant
apache2
php-fpm

<やったこと>
$ yum -y install php-devel

PEARが入っていない場合
curl -O http://pear.php.net/go-pear.phar
sudo php -d detect_unicode=0 go-pear.phar
参考:http://jason.pureconcepts.net/2012/10/install-pear-pecl-mac-os-x/

$ pecl install xdebug-2.2.7

上記がエラーとなる場合は以下を試してみる
$ pear clear-cache
$ pear list-upgrades
$ pear upgrade

xdebug.soのインストール先を探す
[root@localhost ~]# find / -name xdebug.so
/usr/local/php/5.6.15/lib/php/extensions/no-debug-zts-20131226/xdebug.so

php.iniに追記
[root@localhost ~]# vi /usr/local/php/5.6.15/lib/php.ini

# 最終行以降に追記
zend_extension=”/usr/local/php/5.6.15/lib/php/extensions/no-debug-zts-20131226/xdebug.so”
xdebug.remote_enable=1
xdebug.remote_port=”9001″ # 何故かデフォルトの 9000 だとうまくいかないことが多い
xdebug.profiler_enable=1
xdebug.profiler_output_dir=”/tmp”
xdebug.max_nesting_level=1000
xdebug.idekey = “phpstorm” # PhpStorm 側で指定する IDE の識別子
xdebug.remote_connect_back=1
xdebug.remote_autostart=1
xdebug.remote_handler=dbgp

インストールされたか確認
[root@localhost ~]# php -i | grep -i “xdebug support”
xdebug support => enabled

再起動
[root@localhost ~]# /etc/init.d/php-fpm restart