У меня есть набор из трех комбинированных окон (раскрывающихся списков), которые заполняются PHP значениями из базы данных. Я протестировал эти поля со списком, изменив отображаемую кнопку «Отправить» на type='submit'
и загрузив саму страницу php. Они работают безотказно таким образом.
Однако, когда я загружаю страницу Ajax, кнопка отправки отказывается запускать функцию Ajax. Я проверил страницу, создав набор статических полей со списком html, и в этом случае Ajax запускается без помех. Однако использование комбинированных блоков, созданных на PHP, не вызывает Ajax.
Я надеюсь, что кто-то сможет пролить свет на проблему, связанную с моим кодом.
HTML & jQuery:
<div id="gallery_container">
<ul class="new_arrivals_gallery"></ul>
<div class="pagination"></div>
</div>
<script type="text/javascript" src="js/libs/jquery-1.6.1.min.js"></script>
<script>
$(document).ready(function() {
function loadData(imgFamily, imgClass, imgGender){
$.ajax
({
type: "GET",
url: "filter_test.php",
data: {imgFamily:imgFamily, imgClass:imgClass, imgGender:imgGender},
success: function(data) {
$("#gallery_container").html(data);
},
});
}
loadData(1); // For first time page load default results
//Bind keypress event to Ajax call
$('.filter').keypress(function(e) {
if(e.keyCode == 13) {
var imgFamily = $('#imgFamily').attr('value');
var imgClass = $('#imgClass').attr('value');
var imgGender = $('#imgGender').attr('value');
//Fetch the images
loadData(imgFamily, imgClass, imgGender);
}
});
//Bind the click event to Ajax call on submit
$("#submit").click(function(){
var imgFamily = $('#imgFamily').attr('value');
var imgClass = $('#imgClass').attr('value');
var imgGender = $('#imgGender').attr('value');
//Fetch the images
loadData(imgFamily, imgClass, imgGender);
})
});
PHP (хотя я не думаю, что проблема здесь кроется):
Я показываю только одно поле со списком для экономии места, и, поскольку они все одинаковы
// Queries for combo boxes
$imgFamily_query = "SELECT DISTINCT imgFamily FROM images WHERE $clause";
$imgClass_query = "SELECT DISTINCT imgClass FROM images WHERE $clause";
$imgGender_query = "SELECT DISTINCT imgGender FROM images WHERE $clause";
// Create the form and combo boxes
echo "<form name='refine' action=''>
<fieldset><legend>Refine Results</legend>";
// imgFamily combo box
if($imgFamily_result = mysql_query($imgFamily_query)) {
if($imgFamily_success = mysql_num_rows($imgFamily_result) > 0) {
// Start combo-box
echo "<label for='imgFamily' id='imgFamily_label'>Choose a family</label>\n
<select class='filter' id='imgFamily' name='imgFamily'>\n
<option value='1'></option>\n";
// For each item in the results...
while ($imgFamily_row = mysql_fetch_array($imgFamily_result))
// Add a new option to the combo-box
echo "<option value='$imgFamily_row[imgFamily]'>$imgFamily_row[imgFamily]</option>\n";
// End the combo-box
echo "</select>\n";
} else { echo "No results found."; }
} else { echo "Failed to connect to database."; }
// Add a submit button to the form
echo "</fieldset>
<fieldset><input type='button' name='submit' value='submit' id='submit'></fieldset>
</form>";
Большое спасибо за любую помощь.