私は21世紀にAJAXとPHPを学ぶことでWebスキルを身につけようとしていますが、私は、初期選択コントロール "カテゴリ"から選択されたものに応じて、選択コントロール "レシピ"にオプションを設定したいと思います。セカンダリコントロール "レシピ"のオプション項目は、PostgreSQLデータベーステーブルに対して実行されるAJAXクエリの解析結果になります。以下のコードに示す関数 "makeAjaxRequestCategory"は、dataType: 'json'プロパティを含むjQuery AJAX呼び出しです。これが問題の原因です。最高の私は、問題は私が解析することができます結果を返す代わりに、そのプロパティをインクルードし、コードを実行させるときに来ると、エラーとして返します...しかし、応答オブジェクトもステータス200( " OK "...なぜそれはエラーとして解釈されていますか?)。応答オブジェクトのresponseTextプロパティには次のものが含まれます。AJAXとPHP - JSONデータタイプの使用に依存する2つの異なるエラー
responseText:"<br />↵<b>Parse error</b>: syntax error, unexpected '}', expecting ',' or ';' in <b>C:\Bitnami\wampstack-5.5.38-0\apache2\htdocs\ajaxSelectCategory.php</b> on line <b>8</b><br />↵
私はDataTypeプロパティをアウト発言とせずに、それを実行すると、私は別のエラーを取得:
jquery.min.js:4 Uncaught TypeError: Cannot use 'in' operator to search for '179' in <br />(…)
をそれは適切な方法のように思えますこれを行うには、dataTypeをJSONに設定し、PHPから取得したJSONオブジェクトを解析してください。代わりに、矛盾した応答(エラーと200の応答)が同時に発生しているようです。 "category"コントロールに移入するための最初のPHPコールがうまく動作することに注意してください。あなたが成功した回答を得るために与えることができるガイダンスは、私が解析することができれば最も高く評価されます! 。 "localhost" をWindowsの10ラップトップ
- ローカル開発:
は、ここに私の開発環境です
- ChromeでChromeを実行し、ChromeのDevToolsを使用してトラブルシューティングを行う
ここには、メインファイル 'recipesystem.php'があります私は、ブラウザで実行時:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
Version 317.0<br><br>
<div class = 'selection'>
<table id='selectiontable'>
<tr>
<td>Select Recipe Category</td>
</tr>
<tr>
<td>
<select id="category">
<option value='Select a category...'></option>
<?php
$connection = pg_connect("host=localhost port=5432 dbname=recipes user=postgres password=XXXXXXXX");
$result = pg_query($connection,"SELECT category FROM recipesystem.recipe ORDER BY category;");
while ($row = pg_fetch_assoc($result)) {
unset($category);
$category = $row['category'];
echo '<option value="'.$category.'">'.$category.'</option>';
};
?>
</td>
</tr>
</table>
</div>
<br>
<select id="recipe">
<option value='Select a recipe...'></option>
</select>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script>
<script>
// This is for the Category selector...
$('#category').on('change', function(){
$('#recipe').empty();
var selected = $(this).val();
makeAjaxRequestCategory(selected);
})
function makeAjaxRequestCategory(opts){
$.ajax({
type: 'POST',
data: { opts: opts },
dataType: 'json',
url: 'ajaxSelectCategory.php',
success: function(res) {
console.log("Success...")
console.log(res)
$.each(res, function(i, value) {
console.log(value)
})
},
error: function(res){
console.log("There was an error...")
console.log(res)
}
})
}
</script>
</body>
</html>
ajaxSelectCategory.php
<?php
echo "<script> console.log('Starting PHP script....');</script>";
$connection = pg_connect("host=localhost port=5432 dbname=recipes user=postgres password=XXXXXXXX") or die("Connection Error");
$result = pg_query($connection,"SELECT name, category FROM recipesystem.recipe ORDER BY category;");
while ($row = pg_fetch_assoc($result)) {
echo "$('#recipe').append('<option>newvalue</option>');"
};
?>
あなたはJSON – charlietfl