私は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番目の選択ボックスに何か問題がありますか?
何か助けていただければ幸いです。
また、値を 'get_param'として渡していますが、 '$ _GET ['obj']'でアクセスしようとしています。それらのうちの1つを他と一致するように変更する必要があります。 –
だから、データ指定子の 'get_param'を 'get'に変更するだけですか?または、私はちょうど完全にget_paramを失い、代わりに 'data:{obj}'と書くことができますか? – Basti
あなたが話していることと一致しない用語を使用します。これはあなたに誤解を招く恐れがあります。 objはオブジェクトではないので、値(文字列、私は推測します)です。これをしないようにしてください。 ...そしてそれは$ .ajax({url: 'getforms.php'、データ:{obj:obj}、データ型: "json"、成功:fillbox}) –