Как вернуть результат функции на той же странице с помощью jQuery?

#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/FSrT9

5. Оберните свой код в $(document).ready(); вызов. Возможно, это причина, по которой это не работает.

Ответ №2:

Это $_SERVER["PHP_SELF"] . Имейте в виду, что для публикации (если не используются вызовы ajax) требуется обновление страницы.