【问题标题】:Sending javascript variable from view to controller in Codeigniter [duplicate]在Codeigniter中将javascript变量从视图发送到控制器[重复]
【发布时间】:2012-05-18 18:53:44
【问题描述】:

可能重复:
How to get JavaScript function data into a PHP variable

我在 order.php 视图中有一个 javascript 变量,我想将该变量发送到控制器,然后发送到模型以将其写入数据库。

ex: var myOrderString = "something" to order.php 控制器。

如何做到这一点?

【问题讨论】:

    标签: php javascript codeigniter view controller


    【解决方案1】:

    以 rayan.gigs 和 antyrat 的回答为基础,以下是对 rayan.gigs 回答的修复以及您将如何在控制器端接收该信息:

    rayan.gigs 固定答案(修改以匹配下面的控制器示例):

    // your html
    <script>
        var myOrderString = "something";
    
        $.ajax({
            type: "POST",
            url: <?= site_url('OrderController/receiveJavascriptVar'); ?>
            data: {"myOrderString": myOrderString},  // fix: need to append your data to the call
            success: function (data) {
            }
        });
    </script>
    

    jQuery AJAX docs 解释了 AJAX 函数可用的不同函数和参数,如果您不熟悉 jQuery 的 AJAX 功能,我建议您阅读它。即使您不需要成功回调,您可能仍希望实现错误,以便您可以重试 AJAX 调用、记录错误或在适当时通知用户。

    antyrat(修改为适合下面的控制器示例):

    <form action="<?= site_url('OrderController/receiveJavascriptVar'); ?>" method="POST"  id="myForm">
      <input type="hidden" name="myOrderString" id="myOrderString">
    </form>
    <script>
      var myOrderString = "something";
      document.getElementById('myOrderString').value = myOrderString;
      document.getElementById('myForm');
    </script>
    

    对于上述两种情况,控制器可能如下所示:

    <?php
        class OrderController extends CI_Controller
        {
            public function receiveJavascriptVar()
            {
                $myJSVar = $this->input->post('myOrderString');
                // push to model
            }
        }
    ?>
    

    我会推荐 rayan.gigs 方法而不是滥用表格。但是,如果您尝试提交用户信息或在现有表单提交的同时提交信息,您可以使用 antyrat 的方法并插入一个隐藏的内容,您可以在渲染时或通过 javascript 填写。

    【讨论】:

      【解决方案2】:

      您想将 var 从视图发送到另一个控制器 ..... 这意味着新请求

      使用 Ajax 请求很容易做到

      可见

       // your html
       <script>
        var X = "bla bla ";
      
         $.ajax
           ({
           type: "POST",
           url: // ur controller,
           success: function (html)
                                  {
           }
           });
      
       </script>
      

      【讨论】:

        【解决方案3】:

        您可以使用隐藏字段创建简单的 html &lt;form&gt;。将您的 JS 变量分配给该字段并提交表单。

        简单示例:

        <form action="order.php" id="myForm">
          <input type="hidden" name="myOrderString" id="myOrderString">
        </form>
        <script>
          var myOrderString = "something";
          document.getElementById('myOrderString').value = myOrderString;
          document.getElementById('myForm');
        </script>
        

        现在在order.php 中,您将拥有_GETmyOrderString 值。

        您也可以简单地使用 AJAX 来完成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-30
          • 1970-01-01
          • 2016-06-25
          相关资源
          最近更新 更多