#php #jquery #codeigniter
#php #jquery #codeigniter
Вопрос:
Это просто, но я, похоже, не могу сделать это в Codeigniter.
Используя простой php, это должно быть:
<form id="volume" method="post" action="<?php echo $PHP_SELF;?>">
<label>length(cm):</label>
<input type="text" name="length">
<label>width(cm):</label>
<input type="text" name="width">
<label>height(cm):</label>
<input type="text" name="height">
<button type="submit">Submit</button>
</form>
<?php
$length = $_POST["length"];
$width = $_POST["width"];
$height = $_POST["height"];
$variable = 5000;
$sum_total = ($length * $width * $height) / $variable;
printf (".2f" , $sum_total);
?> kg
Я поместил форму в моем представлении, php в моем контроллере, но я хочу, чтобы он возвращал результат на той же странице, а не перенаправлял меня.
Заранее благодарю всех вас за ваши ответы.
Комментарии:
1. Куда это вас перенаправляет?
2. Вы вообще пробовали писать какой-либо код jQuery?
3. Более старый
$PHP_SELF
не работает, когдаregister_globals = Off
. Используйте$_SERVER['PHP_SELF']
вместо этого.
Ответ №1:
Поместите jQuery, аналогичный этому, на страницу с вашей кнопкой отправки.
$(document).ready(function(){
$('#volume').submit(function(event){
event.preventDefault();
var post_array = {
length: $('input[name=length]').val();
width: $('input[name=width]').val();
// etc
};
$.post('path/to/controller/method', post_array, function(data){
alert(data); // do stuff;
}
return false; //to stop the form from submitting
});
});
Поместите PHP, который вычисляет результат, в ‘path/to/ controller /method’ и получите его return $resu<
.
Когда пользователь нажимает кнопку отправки, он отправляет ajax-запрос в ваше новое представление и возвращает результат в jQuery, где вы можете затем изменить страницу или что вы хотите сделать.
Комментарии:
1. Кажется, это правильно, но это все равно перенаправляет меня на мой URL-адрес контроллера / метода
2. Интересно. Я бы выяснил, почему.
return false;
следует прекратить отправку этой формы. Проверьте свою консоль на наличие синтаксических ошибок и прочего.3. Я исправил все синтаксические ошибки, но все равно перенаправляет меня туда. Я изучу это и дам вам знать. Вы были действительно полезны! Приму ответ, когда разберусь с этим.
4. Дважды проверьте свой код. Вот jsFiddle, показывающий, как
return false;
работает: jsfiddle.net/FSrT95. Оберните свой код в
$(document).ready();
вызов. Возможно, это причина, по которой это не работает.
Ответ №2:
Это $_SERVER["PHP_SELF"]
. Имейте в виду, что для публикации (если не используются вызовы ajax) требуется обновление страницы.