質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.80%

ajaxでphpの関数呼び出しについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 3,638

score 9

わかりづらいと思います、すみません…。

セレクトボックスで選択した値に応じて
データベース(mysql)からデータを取得し、テーブルに表示するという
プログラムを作成しているのですが、画面の再描画をせず
テーブルに表示したくajaxを使いたいと思ってます。

ですが、調べてコードを見てみてもいまいちどこで呼び出したいfunction
を指定しているのかわからず、先に進めません…。

onchangeでjavascriptの関数呼び出し→ajaxでphpの関数にアクセス(呼び出し?)してDBから
データを取得→取得したデータをjavascriptからテーブルに挿入?
みたいに考えていました。

そこで質問なのですが、

・phpの特定のfunctionを呼び出したいのですが、どのように指定すればよいのでしょうか?
(phpのなかで呼び出すときは pattern_input();で呼びだすがjqueryではどうやって…?)

・そもそもの考え方自体が間違っていますか?

勉強不足なのは重々承知しておりますが、理解が追い付かず
どうしようもない状態です…お力お貸しいただけたら幸いです。

<!-- selectボックス -->
<select class="list-set" name="set-name" onchange='patternInput();' >
  <?php
    $pattern = "";
    if(isset($select)){
      $pattern = $select;
    }
    foreach($ptn_list as $alue){
      $select = $value == $pattern? 'selected':'';
      echo '<option value="'.$value.'" '.$select.'>'.$value.'</option>';
    }
  ?>
</select>
function pattern_input(){

  $patternName = $_GET["set-name"];
  $sql= "SELECT* FROM tb1 WHERE staff = '".$staff."' AND pattern = '"
        .$patternName."' AND Flg = 0 ORDER BY No ASC";
  $res = $db->query($sql);
  while($row = mysqli_fetch_array($res)){
    $pattern_input_date[] = $row;
  }

    //もろもろの処理(今回は省略)
    }
function  patternInput(){

  $.ajax({
   url: 'index.php',
   type: 'post',
   dataType: 'json',

  //もうわからない…
  })
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+3

・phpの特定のfunctionを呼び出したいのですが、どのように指定すればよいのでしょうか?

呼べません。
クライアントサイドのJavaScriptから出来るのは、webサーバを経由してPHPファイルにアクセスして結果を文字列として受け取る事だけです。(ブラウザからPHPにアクセスするときはxxxx.phpにアクセスしますが、それと同じ事しかできません。)

そのため、流れとしては

  1. Ajaxの処理を受ける用に専用のPHPファイルを用意する
  2. Ajax側からは1のPHPにアクセス出来るURLにアクセスする。
  3. そのPHPファイル内で必要な処理を行う
  4. Ajax側でPHPの処理結果が必要な場合は、JavaScriptが理解できる文字列の形式(JSON等)でPHPで文字列を出力する

という流れになります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/22 15:57

    回答ありがとうございます!
    出来ないんですね…教えていただけて助かりました!
    そもそもがわかってなかったのでまだ出来そうにないですが
    流れがわかったのでなんとか進みそうです、ありがとうございました。

    キャンセル

  • 2020/01/22 16:52

    進展しそうで良かったです。

    調べるときのキーワードとしては
    PHP API Ajax 作成
    あたりかなと思います。

    あとは、
    JavaScriptから見た場合はPHPもただのJSONも同じなので、まずはただのJSONファイルを用意して、それをAjaxで読み込んで処理をする という練習をしてみるとイメージがわきやすいかもしれません。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る