【问题标题】:How to return the result of a function in the same page using jQuery?如何使用jQuery在同一页面中返回函数的结果?
【发布时间】:2011-10-07 12:57:24
【问题描述】:

这很简单,但我似乎无法在 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 ("%01.2f" , $sum_total);

?> kg

我将表单放在我的视图中,将 php 放在我的控制器中,但我希望它在同一页面中返回结果而不是重定向我。

提前感谢大家的回复。

【问题讨论】:

  • 它会将你重定向到哪里?
  • 你试过写任何 jQuery 代码吗?
  • 旧的$PHP_SELFregister_globals = Off 时不起作用。请改用$_SERVER['PHP_SELF']

标签: php jquery codeigniter


【解决方案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 $result;

当用户单击提交按钮时,它将向您的新视图提交一个 ajax 请求并将结果返回给 jQuery,您可以在其中更改页面或您想要做的事情。

【讨论】:

  • 这似乎是正确的,但它仍然将我重定向到我的控制器/方法 url
  • 有趣。我会弄清楚为什么。 return false; 应该阻止该表单提交。检查你的控制台是否有语法错误和其他东西。
  • 我已更正所有语法错误,但仍将我重定向到那里。我会调查它并让你知道。你真的很有帮助!当我弄清楚时会接受答案。
  • 仔细检查您的代码。这是一个 jsFiddle,展示了 return false; 的工作原理:jsfiddle.net/FSrT9
  • 将您的代码封装在 $(document).ready(); 调用中。也许这就是它不起作用的原因。
【解决方案2】:

它是$_SERVER["PHP_SELF"]。请记住,对于帖子(除非使用 ajax 调用),需要刷新页面。

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 2018-08-09
    • 2011-08-06
    • 2012-06-24
    • 2012-02-06
    • 2013-12-04
    • 1970-01-01
    • 2022-07-10
    • 2014-05-06
    相关资源
    最近更新 更多