2017-11-06 23 views
0

PHPファイルにajaxリクエストを作成しようとしています。PHPへのAjaxリクエストの送信が動作しない

「国」選択オプションメニューが変更されたときにajaxリクエストが発生します。結果は、「州」という新しい選択オプションメニューであり、オプションは「国」選択オプションメニューでの選択に基づいています。

これは私がそれを見えるようにしたいものです:AjaxはPHPへの要求を行っているとき

ideal select option menus

私がいる問題があり、PHPは空の配列を返すしているようです:

firefox developer edition response

誰もが間違っているかもしれないものを知っていますか?

ありがとうございました!

HTML選択オプションのために:

$("#Country").on("change",function(){ 
    var val = $('#Country').val(); 
    performAJAX(val,'Country','StateProvince'); 
}); 

function performAJAX(choice,prevSelect,newSelect){ 
    $.ajax({ 
      type: "post", 
      url: "select-creation.php", 
      data: {choice: choice, prevSelect: prevSelect,newSelect: newSelect}, 
      dataType: "json", 
      success: function(data){ 
       var obj = $.parseJSON(data); 
       console.log("meow meow"); 
      } 
    }); 
} 

PHPコード:

<select name="Country" class="form-control input-sm" id="Country"> 

</select> 
のonchange機能付き

Ajaxコード

<?php session_start(); 
    try{ 
     $choice = $_POST['choice']; 

     $prevAttri = $_POST['prevSelect']; 

     $nxtAttri = $_POST['newSelect']; 

     $data = array(); 

     $sql = 'SELECT '.$nxtAttri.' FROM agents WHERE '.$prevAttri.' = :userChoice'; 
     include_once $_SERVER['DOCUMENT_ROOT'].'/inc/Database.class.php'; 
     $db = new Database(); 
     $conn = $db->getConnection(); 
     $query = $conn->prepare($sql); 
     $query->bindValue(':userChoice',$choice,PDO::PARAM_STR); 

     if($query->execute()){ 
      $data = $query->fetchAll(PDO::FETCH_ASSOC); 
     }//stmt 

     return json_encode($data); 
    }catch(PDOException $e){ 
     echo $e->getMessage(); 
    } 
?> 
+0

"meow meow"コンソールログは、PHPのファイルである – Bpicks

+2

がPHPの開発者ではありませんでしたが、返信に成功したかどうかを確認するテストとして機能しますが、PHPでは 'echo json_encode($ data)'それを返す代わりに? – Frankusky

+0

データが返ってこないかもしれません – guradio

答えて

2

あなたのコードreturn json_encode($data);は何か、または無効になることはありませいるようですあなたのコードは関数を使用していないからです。

ただ、AJAX側でecho json_encode($data);

を使用し、あなたはすでにそれがすぐにオブジェクト型にPHPでデータ応答を変換しますdataTypejsonに指定するため$.parseJSON(data);を使用する必要はありません。

+0

私は同じ事を書くようになっていました:P、あなたは素早いタイサイパーのようです –

+0

うわー、ありがとう、それは働いた!私のポストのすぐ下にコメントした人々に感謝します。 – Bpicks

関連する問題