PHP(または実際には、一般的にWebサーバー)に関する限り、HTMLページは大きな文字列ほど複雑ではありません。
PHPなどの言語で実行できるすべての凝った作業-データベースやWebサービスからの読み取りなどすべて-究極の最終目標は、まったく同じ基本原理です。HTML*の文字列を生成します。
大きなHTML文字列は、Webブラウザーによって読み込まれるまで、特別なものにはなりません。ブラウザページは、ロードされると、その後、レイアウト、ボックスモデルのもの、DOM生成、およびJavaScriptの実行を含む他の多くのもの、 -他のすべての魔法が起こります。
つまり、「PHPからJavaScriptを呼び出す」のではなく、「出力にJavaScript関数呼び出しを含める」ということです。
これを行うには多くの方法がありますが、ここにいくつかあります。
PHPのみを使用:
echo '<script type="text/javascript">',
'jsfunction();',
'</script>'
;
PHPモードから直接出力モードへのエスケープ:
<?php
// some php stuff
?>
<script type="text/javascript">
jsFunction();
</script>
関数名などを返す必要はありません。まず、AJAXリクエストを手動で記述するのをやめます。あなたは自分自身にそれを難しくしているだけです。jQueryまたは他の優れたフレームワークの1つを入手してください。
次に、AJAX呼び出しから応答を受け取ったら、すでにJavaScriptコードを実行していることを理解してください。
これが、jQueryのAJAXで実行していることの例です。
$.get(
'wait.php',
{},
function(returnedData) {
document.getElementById("txt").innerHTML = returnedData;
// Ok, here's where you can call another function
someOtherFunctionYouWantToCall();
// But unless you really need to, you don't have to
// We're already in the middle of a function execution
// right here, so you might as well put your code here
},
'text'
);
function someOtherFunctionYouWantToCall() {
// stuff
}
これで、PHPからAJAX呼び出しに関数名を送信することに夢中になっている場合でも、それを行うことができます。
$.get(
'wait.php',
{},
function(returnedData) {
// Assumes returnedData has a javascript function name
window[returnedData]();
},
'text'
);
*またはJSONまたはXMLなど