在Codeigniter中将javascript变量从视图发送到控制器

时间:2012-05-10 08:14:18

标签: php javascript codeigniter view controller

  

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

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

ex:var myOrderString =“something”to order.php controller。

怎么做?

3 个答案:

答案 0 :(得分:3)

要建立在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填充。

答案 1 :(得分:0)

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

使用Ajax请求很容易

在视图中

 // your html
 <script>
  var X = "bla bla ";

   $.ajax
     ({
     type: "POST",
     url: // ur controller,
     success: function (html)
                            {
     }
     });

 </script>

答案 2 :(得分:0)

您可以使用隐藏字段创建简单的html <form>。将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您的_GET值为myOrderString

你也可以简单地使用AJAX。