私は長年潜んでいて、初めて Stack Overflow に投稿しました (これまでにかなりの数のプログラミング プロジェクトで私を救ってくれました)。サイトを検索しても見つからなかった固有の問題があるので、ここで説明します。
ユーザーが食品カテゴリを選択できるオンライン注文フォームを作成しています。そのカテゴリは、データベースでクエリを実行し、そのカテゴリ内のすべての項目を ItemXSelect (X は項目番号) という名前のドロップダウン ボックスに返すコードの別のページに送信されます。これで困ったことはありません。ただし、ユーザーが別の AJAX クエリで ItemXSelect に選択した値を使用する際に問題があります。具体的には、AJAX リクエストはまったく送信されません (Firebug によると)。構文エラーのような単純なものであることを願っていますが、何日も取り組んできました。
以下のコードは、PHP Echo ステートメント内に記述された Jquery/AJAX であり、特定の文字がエスケープされています。$itemNum は、ItemXSelect の X の値を決定します。
\$(\"#Item" . $itemNum . "Select option:selected\").change(function() {
var sel = \$(\"#Item" . $itemNum . "Select option:selected\").text());
\$.ajax({
type: \"POST\",
url: \"sizearray.php\",
data: { category: \"Cold_Sandwiches\" , selection: sel },
dataType: \"text\"
}).done(function(result) {
\$(\"#Item" . $itemNum . "Size\").html(result);
});
\$(\"#Item" . $itemNum . "Size\").show();
});
これは何日も私を悩ませてきました。ここで何が問題なのかを見つけるのを手伝ってくれる人に感謝します (または、少なくともそうしようとさえします)。
================================================== ===================================
編集1
あなたの助けのおかげで、代わりにすべての JQuery を PHP EOD ステートメントでラップして、コードをクリーンアップしました。そうすれば、私はすべてを逃れる必要はありません。以下は、更新されたコードです。以下の提案は、これまでのところ主な質問に答えるには役立っていませんが、少なくとも構文はずっときれいです。
jQuery("#Item{$itemNum}Select option:selected").change(function() {
var sel = jQuery("#Item{$itemNum}Select option:selected").text());
jQuery.ajax({
type: "POST",
url: "sizearray.php",
data: { category: "Cold_Sandwiches" , selection: sel },
dataType: "text"
}).done(function(result) {
jQuery("#Item{$itemNum}Size").html(result);
});
jQuery("#Item{$itemNum}Size").show();
});