2017-06-11 13 views
0

私はAJAX経由でPHPへの呼び出しをいくつか行っています.AJAXはPOSTを使用してPHPからのエコー文字列を取得し、それをスイッチで比較して必要な処理を行います。PHPからJS関数を呼び出す

function submitPHP(dataForPHP){ 
    //Runs ajax request 
    $.ajax({ 
     type : "POST", 
     url : 'initPHP.php', 
     dataType : 'text', 
     data : dataForPHP, 
     success : function(data){ 
      //Checks echoed data from PHP 
      switch(data){ 
       case "LOGIN_ACCEPTED": 
        loggedInFunction(); 
        break; 
       case "LOGIN_FAILED": 
        loggedInFailedFunction(); 
        break; 
      } 
     } 
    }); 
} 

PHPがどのような機能を返すための方法があれば、私は考えている以下のコードの例(のような「loggedInFunction();」)私の代わりに私が、その後に持っている文字列を呼び出したいです比較して関数を呼び出しますか? JSONを使用するようにAJAXを変更することができます。

他の同様の質問については、私がやりたいことではない機能全体をエコーし​​たいと思っています。

ありがとうございます!

+0

あなたがしたいのはJSONPです:https://stackoverflow.com/a/3840118/4949918 – Axnyff

+0

私は[this](https://stackoverflow.com/questions/912596)と思います。 /どのように-にターン - 文字列に-javascriptの関数呼び出し)あなたが探しているものかもしれません。私はあなたがバックとフロントエンド非常に緊密に結合するようにしたいこと、それは少し奇妙見つけるが、それは可能です。助言の最後の言葉: 'eval'ルートを下ってはいけません。ドラゴンがいる。 –

+4

あなたはやりたいことをやりたくありません。それもJSで呼ばれるようにどのような機能を知るためにPHPのグレードってこんなモンではないですが、またそれは、使用するPHPのウィッヒ機能を伝えるためにJSのグレードってこんなモンです。それらをsepeartedに保ち、2つの端の間のコミュニケーションのためのインターフェースを使用するか、またはJSで何かを変更したのでPHPをデバッグする必要があります。 – Thomas

答えて

0

私はこれをします。

  1. HTTPSを使用してログインを実行すると、HTTPは今日は安全ではありません。
  2. 全て方法(アクション)とコントローラオブジェクトを作成します。
  3. のアクションコントローラと呼んでください。

コントローラを持つことのアイデアがいくつかのレベルに便利です:

  • セキュリティ:メソッドがコントローラでない場合、それは知っている方法ですので、あなたは、それを呼び出すことはできません何が呼び出せ、何が絶対に呼び出せないのか。
  • 凝集力:これらの方法はすべて互いに隣り合っており、維持しやすい。
  • カプセル化:状態があれば、そのオブジェクトのコンテキスト内で簡単に保持できます。

これは一例です:

loginController = { 
    "acceptAction": function() { 
    }, 
    "failAction": function() { 
    } 
}; 

あなたは今、AJAXハンドラからこれらのメソッドを呼び出すことができます。サーバがあなたに何をしなければならないかを伝えてください。 動詞と言います(acceptfailなど)。次のようにしてください:

"success": function (data) { 
    loginController[data + "Action"](); 
} 

これだけです。

BTW:ちょうど非常に基本的なMVCパターンです。 Oldie but goldie :)

関連する問題