2017-08-08 3 views
0

私はJavascriptやAjaxやJSONに関する多くの経験はありませんが、現在のところ単純なPostgreSQLデータベース用のHTMLルックアップツールを構築しています。ここにはほとんど行きません。 I want to fill the selectbox on the right with corresponding form names from our database whenever the user selects the study in the left selectbox しかし、私はPHPスクリプトから戻ってくる配列を処理するのに問題があります。AJAXとJSONを使用して現在のサイトのselectboxを入力してください

<!DOCTYPE html> 
<html> 
<head> 

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery/3.2.1.min.js"</script> 
<script> 
function getselect(value) { 
    $.ajax(
     { 
      type: "GET", 
      url: 'getforms.php', 
      data: {value: value}, 
      dataType: "json", 
      success: fillbox 
     }); 
} 

function fillbox(data) { 
       var forms = $('#forms'); 
       var arr = $.parseJSON(data); 
       for (var x = 0; x < arr.length; x++) { 
        forms.append(new Option(arr[x])); 
       } 
      } 
</script> 
</head> 
<body> 

[...] 

<?php 
$snames = $conn->prepare("SELECT DISTINCT studienname FROM public.fulldict"); 
$snames->execute(); 
$a=$snames->fetchAll(PDO::FETCH_COLUMN, 0); 
?> 

<table border="0"> 
    <tr> 
     <th>Studien:</th> 
     <th>Formulare:</th> 
    </tr> 
    <tr> 
     <td> 
      <select id="study" name="Studien" size="12" onchange="getselect(this.value);"> 
       <?php foreach($a as $option) { ?> 
        <option value="<?php echo $option ?>"> <?php echo $option ?> </option> 
       <?php }?> 
      </select> 
     </td> 
     <td> 
     <select id="forms"></select> 
     </td> 
    </tr> 
</table> 
?> 
</body> 
</html> 

getforms.phpは、SQLクエリを処理し、「fillbox」関数は、の値で選択ボックスを埋めることになっているのJavascript、に戻って、データベースから値の配列を送信することを目的としていますアレイ。

<?php 
$f = $_GET['value']; 
// Connect to Database 
require_once 'dbconfig.php'; 
$dsn = "pgsql:host=$host;port=5432;dbname=$db;user=$username;password=$password"; 
$conn = new PDO($dsn); 

// Get array with form names 
$form_arr=array(); 
$fnames = $conn->prepare("SELECT DISTINCT formular FROM public.fulldict WHERE studienname = '$f'"); 
$fnames->execute(); 
$form_arr=$fnames->fetchAll(PDO::FETCH_COLUMN, 0); 
echo json_encode($form_arr); 
?> 

コードを実行して最初の選択ボックスから何かを選択すると、何も起こりません。 2番目の選択ボックスに何か問題がありますか?

何か助けていただければ幸いです。

+3

また、値を 'get_param'として渡していますが、 '$ _GET ['obj']'でアクセスしようとしています。それらのうちの1つを他と一致するように変更する必要があります。 –

+0

だから、データ指定子の 'get_param'を 'get'に変更するだけですか?または、私はちょうど完全にget_paramを失い、代わりに 'data:{obj}'と書くことができますか? – Basti

+0

あなたが話していることと一致しない用語を使用します。これはあなたに誤解を招く恐れがあります。 objはオブジェクトではないので、値(文字列、私は推測します)です。これをしないようにしてください。 ...そしてそれは$ .ajax({url: 'getforms.php'、データ:{obj:obj}、データ型: "json"、成功:fillbox}) –

答えて

0

ありがとうございました。 PHPファイルにJSONヘッダーを追加した後。 「.append(新しいオプション())」のものがが動作しなかった理由を私は

function fillbox(data) { 
var options = ''; 
for (var x = 0; x < data.length; x++) { 
    options += '<option value="' + data[x] + '">' + data[x] + '</option>'; 
} 
$('#forms').html(options);} 

にfillbox機能を変更しなければならなかったまだ非常に理解していませんか?

関連する問題