
###わからないこと
いつもお世話になっております。
この度、phpファイルからjavascriptファイルへの変数を渡すことができず、対処に困っております。
ご助力いただけないでしょうか。
以下のパターンを試みましたが、うまくいっておりません
###パターン①
php
1<? php 2$project = 'aaaa' 3?> 4<script type="text/javascript" src="{{asset("jump.js")}}"></script> 5<script> 6url = <?php echo $project;?> 7</script>
javascript
1page.open(url, function(status) { 2}); 3
↑のパターンでは、そもそもphpファイル内、「<?php echo $project;?>」にてundefinedのエラーが発生しています。
###パターン②
php
1<? php 2$project = 'aaaa' 3
javascript
1var url='<?php echo $project; ?>'; 2page.open(url, function(status) { 3})
↑のパターン②ではエラーは出ませんがurlをopenすることができていません。
##追記①
phpファイル
<?php $project = 'aaaa'; ?> <script type="text/javascript" src="jump.php"></script>
jsファイル
console.log('Hello, world!'); var page = require('webpage').create(); var fs = require('fs'); var url = "<?php echo $project; ?>";console.log(url); page.open(url, function(status) { if (status === 'success') { page.switchToFrame(0); // HTML を書き出し var html = page.evaluate(function() { return document.getElementsByClassName('contents')[0].innerHTML; }); fs.write('resources\kaigokensaku.blade.php', html, 'w'); } // exit しないと終了しない phantom.exit(); });
上記のjsファイルで「console.log(url);」をかけて出力を確認したところ、
「string() "<?php echo $project; ?>"」
が出力されました。
##追記②
jsにphpの変数を渡せなかったのは、私のコードが下記のようになっていたからでした。
php
1<?php 2$project = 'aaaa'; 3 4 $uu = exec('C:\X_DRIVE\asp\home\laravel\vendor\bin\phantomjs.exe C:\X_DRIVE\asp\home\laravel\public\js\jump.js');dd($uu); 5 // 取得したhtmlをkaigokensaku.blade.phpに出力・取得 6 $file = 'C:\X_DRIVE\asp\home\laravel\resources\kaigokensaku.blade.php'; 7 $fileContent = file_get_contents($file); 8 $fileContent = str_replace('&', '&', $fileContent); 9 10 11 $xml = simplexml_load_string($tidy); 12?>
そこで下記のように変更を加えてみました。
php
1$project = 'aaaaa'; 2?> 3<script> 4var url = <?php echo $project;?>; 5</script> 6<?php 7exec('C:\X_DRIVE\asp\home\laravel\vendor\bin\phantomjs.exe C:\X_DRIVE\asp\home\laravel\public\js\jump.js');
しかし、このようにした結果、今度はjump.jsファイルにて処理がうまく走らなくなりました。
javascript
1var page = require('webpage').create(); 2var fs = require('fs'); 3page.open(url, function(status) { 4 if (status === 'success') { 5 page.switchToFrame(0); 6 // HTML を書き出し 7 var html = page.evaluate(function() { 8 return document.getElementsByClassName('contents')[0].innerHTML; 9 }); 10 fs.write('resources\kaigokensaku.blade.php', html, 'w'); 11 } 12 // exit しないと終了しない 13 phantom.exit(); 14}); 15
上記のjsファイルにてurlを参照し、そのページのhtmlをローカルのblade.phpファイルに出力する構造になっています。
ご助力いただけないでしょうか。
何卒よろしくお願いいたします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/27 09:30
2017/11/27 09:32
退会済みユーザー
2017/11/27 09:42