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

Posted

技术标签:

【中文标题】在Codeigniter中将javascript变量从视图发送到控制器[重复]【英文标题】:Sending javascript variable from view to controller in Codeigniter [duplicate] 【发布时间】: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 控制器。

如何做到这一点?

【问题讨论】:

【参考方案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 来完成。

【讨论】:

以上是关于在Codeigniter中将javascript变量从视图发送到控制器[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 RoR 中将变量值注入 javascript 和 HAML

javascript 变量未在表单中显示 codeigniter 的验证错误

如何在 CodeIgniter 分页中将类名设置为 <a> 标签

如何在codeigniter中将上传图片比例限制为16:9?

在 Codeigniter 中将 http 重定向到 https

如何在 Codeigniter 中将值从视图传递到模型