2016-12-16 18 views
1

私はnode.jsベースのアプリケーションをIBMのBluemixにデプロイしており、提供しているサンプルの1つにいくつかの機能を追加しました。 PHPへのajax呼び出しを行う追加のjavascriptファイルを追加しましたが、パスが正しくないためにPHPファイルが見つからないため戻ってきています。私はファイルをどこにでも置こうとしましたが、見つからないだけです。私はいくつかの不思議な構成や何かを失っていると思っています(ノードノービー全体として)。 (とりわけ)のメインディレクトリでNode.jsを使用したファイルパスの問題

は、構造がこのようなものです:私はこの呼び出しをしようとすると

$("#get-twitter").click(function(event) { 
    handle = $('#twitter-handle').val(); 
    $.ajax({ 
     url: 'php/get-twitter.php', 
     type: 'POST', 
     dataType: 'JSON', 
     data: { 
      handle: handle, 
      }, 
     success: function(data) { 
     console.log(data); 
     $.each(data, function(index, val) { 
      console.log(val.text); 
     }); 
     } 
}); 
    }); 

:custom.jsで

-- views 
    - index.ejs (this is the main displayed code) 
-- public 
    - js 
    - custom.js (my added file) 
    - all the other necessary js files 
    - css 
    - img 
    - php - I added this directory 
    - get-twitter.php - I added this...custom.js makes an ajax call here 

、私はこれを持っていますファイルが見つかりませんが、パスはこれです:https://myapp.mybluemix.net/php/get-twitter.phpviews/php/get-twitter.phpにする必要がありますが、これは私の最後に設定上の問題だと思います。

私はこのすべての繰り返しを試しました:url: 'php/get-twitter.php',とすべてのディレクトリにPHPファイルを置くと何も動作していません。

私はここで何が欠けていますか?

+2

Node.jsアプリケーションでPHPを実行するために、どのサーバー側JavaScriptを作成しましたか? – Quentin

+0

それは私が推測する問題です。 Nodeを一度も使用していないので、私の例で見られるコード以外に何が必要なのか分からなかった。私はそれがそうであると思った。 – jonmrich

+0

ibm-bluemixタグとcontinuous-deliveryタグを追加して、IBMの開発アイデアを得ました。私は5タグの制限のためにPHPを削除する必要がありました。 – ralphearle

答えて

1

ノードからPHPスクリプトを実行する方法はありません。 PHPをサポートするサーバーをセットアップし、そこにリクエストする必要があります。 1つのオプションはApacheです。

現実的には、単一のPHPスクリプトを実行する目的でサーバ全体をセットアップする必要はないでしょう。もっと合理的な解決策は、PHPスクリプトを移植してNode上で実行することです。 NPMにtwitter APIを統合するパッケージはたくさんあります(例えば、twitterモジュール)。

1

サーバーにPHPがインストールされている場合は、execを使用して、コマンドラインインタプリタを使用してPHPファイルを実行し、出力を取得できます。明らかに、シェルによって渡された引数で動作するようにコードをリファクタリングする必要があり($args)、ノードによってキャッチされるJSON応答を表示する必要があります。例:

exec('php -f /project/file.php', function (err, out) { 
    if (!err) { 
    const output = JSON.parse(out); 
    // do something with the object 
    } 
}); 

@positlabsが述べたように、物事をより単純にして、スクリプトをJavaScriptに移植します。

関連する問題