5

重複の可能性:
JavaScript関数データをPHP変数に取り込む方法

order.phpビューにjavascript変数があり、その変数をコントローラーに送信してからモデルに送信して、データベースに書き込みます。

例:var myOrderString = "something"toorder.phpコントローラー。

これを行う方法?

4

3 に答える 3

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ドキュメントでは、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を介して入力した非表示を挿入することができます。

于 2012-05-10T13:46:20.613 に答える
0

ビューから別のコントローラーにvarを送信したい.....それは新しいリクエストを意味します

Ajaxリクエストを使用して行うのは簡単です

ビューで

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

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

 </script>
于 2012-05-10T08:16:19.187 に答える
0

<form>非表示フィールドを使用して単純なhtmlを作成できます。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を使用するだけでそれを行うことができます。

于 2012-05-10T08:19:00.027 に答える