Содержимое тега формы: –
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ;?>" >
Содержимое тега кнопки: –
<input type="submit" id="submit_button" value="Submit">
Функции j-запроса
$('#submit_button').click(function () { alert("button clicked"); buildingVal = $("#building").val(); levelVal = $("#level").val(); data = 'building=' + buildingVal.val() + 'level=' + levelVal.val(); $.ajax( { url: "res.php", type: "POST", data: data, success: function (data) { } }); return false; });
Страница перезагружается, а данные в текстовых и выпадающих меню исчезают.
но если у меня есть только этот код в jquery: –
$('#submit_button').click(function () { alert("button clicked"); return false; });
то страница не перезагружается, и значения остаются неизменными.
Пожалуйста, не могли бы вы рассказать мне, как я могу предотвратить перезагрузку страницы?
Также в вызове ajax я буду вызывать страницу res.php, которая вернет таблицу,
Каким будет код в
success: function (data) { }
пожалуйста помоги…
Редактировать:
Я передаю данные на страницу res.php с кодом
data = 'building=' + buildingVal.val() + 'level=' + levelVal.val();
а затем передать его на страницу, используя
$.ajax( { url: "res.php", type: "POST", data: data, success: function (data) { $('#npc').html(data); } });
на странице res.php
как извлечь два значения из одного значения, которое было передано
я попытался использовать следующий код
$building = mysql_real_escape_string($_GET['building']); $level = mysql_real_escape_string($_GET['level']);
Но это не работает …
У вас есть ошибка в коде jQuery:
Ошибка:
buildingVal = $("#building").val(); levelVal = $("#level").val(); data = 'building=' + buildingVal.val() + 'level=' + levelVal.val();
Решение:
buildingVal = $("#building"); levelVal = $("#level"); data = 'building=' + buildingVal.val() + '&level=' + levelVal.val();
Полный код js:
$('#submit_button').click(function () { var buildingVal = $("#building"), levelVal = $("#level"), data = 'building=' + buildingVal.val() + '&level=' + levelVal.val(); $.ajax({ 'url': 'res.php', 'type': 'POST', 'data': data, 'success': function (data) { } }); return false; });
редактировать
Если вы когда-либо собираетесь использовать эту форму для отправки данных по ajax, лучший способ – отменить событие «отправить» форму:
HTML:
<form id="myform" method="post" action="<?php echo $_SERVER['PHP_SELF'] ;?>" > ... </form>
JS:
$('#myform').bind('submit', function(event) { return false; }); $('#submit_button').bind('click', function () { var buildingVal = $("#building"), levelVal = $("#level"), data = 'building=' + buildingVal.val() + 'level=' + levelVal.val(); $.ajax({ 'url': 'res.php', 'type': 'POST', 'data': data, 'success': function (data) { } }); });
Лучший способ – не использовать кнопку submit
в первую очередь.
<input type="button" id="myButton" value="Submit"> $('#myButton').on('click', function(){ //do ajax });
Вам необходимо предотвратить поведение по умолчанию в событии click:
$('#submit_button').click(function (event) { event.preventDefault(); alert("button clicked"); return false; // Not truly necerssary });
Поэтому, чтобы кнопка отправки не отправляла вашу страницу со своим поведением по умолчанию, выполните следующие действия:
$('#submit_button').click(function (event) { event.preventDefault(); buildingVal = $("#building").val(); levelVal = $("#level").val(); data = 'building=' + buildingVal.val() + 'level=' + levelVal.val(); $.ajax( { url: "res.php", type: "POST", data: data, success: function (data) { } }); });