2014-11-24 166 views
0

我在項目中使用codeigniter來製作應用程序,但我被卡住了,當我想通過ajax將相同的變量通過ajax傳入控制器時,我得到錯誤,變量未定義。通過AJax傳遞變量

這是一個例子。

$("#form_status_update").submit(function() { 
      var date = new Date().toString();` 
        $.ajax({ 
        type: 'POST', 
        url: "<?php echo base_url()?>socialcontroller/setdate", 
        data:date, 
        success: function(data) { 
         window.location.href = "<?php echo base_url()?>socialcontroller/ssetdate"; 

        }, 
        error: function(xhr, ajaxOptions, thrownError) { 
         alert(thrownError); //throw any errors 
        } 
       }); 
      }); 

傳遞一些變量後,我想插入到我的數據庫。 和我的問題是如何通過一個變量不能在現場爲通過AJAX感謝控制器,我已經在谷歌搜索,但我沒有歌廳正確的答案:) `

+4

是否在第二行上有複製/粘貼錯誤?你可能不應該使用'date'作爲變量的名字,因爲它是一個關鍵字。 – 2014-11-24 18:25:01

+0

@JayBlanchard'date'是一個關鍵詞? – epascarello 2014-11-24 18:28:48

+0

多數民衆贊成只是一個例子,我只是想通過ajax – 2014-11-24 18:28:49

回答

0

以下是幫助您解決問題的代碼 您可以根據自己的代碼調整它,它應該可以工作!

<script> 

     $(document).ready(function(){ 
      $("button").click(function(){ 
      var myDate = new Date(); 
      $.ajax({ 
      // Send with POST mean you must retrieve it in server side with POST 
      type: 'POST', 
      // change this to the url of your controller 
      url:"index.php", 
      // Set the data that you are submitting 
      data:({date:myDate}), 

      success:function(result){ 
       // Change here with what you need to do with your data if you need of course 
       $("#div1").html(result); 

      }}); 
      }); 
     });   
</script> 

<body> 

<div id="div1"> 
    <p>Today date here</h2> 
    </div> 
<button> Get Date< /button> 
</body> 

</html> 

和你的PHP代碼可以是這樣的!

<?php 

// This line of code should get your data that you are sending 
$data = $_POST['date']; 

/// This code was just for checking purpose that it is returning the same value through ajax 
$arr = array(
'receive_date'=>$data, 
); 
echo json_encode($arr); 

我覺得這個代碼可以用MVC框架的必須工作,如果你設置你的控制器URL作爲URL參數。請檢查通過POST獲取數據的Framework文檔!

2

data:date,是錯誤的。你在querystring上傳遞一個數字,而不是一個鍵/值對。

它需要

data: {date : date}, 

data: "date=" + encodeURIComponent(date), 

From jQuery Docs:

數據

類型: PlainObject或字符串或陣列

數據要被髮送到所述服務器 。它被轉換成查詢字符串,如果還不是字符串的話。 它附加到GET請求的url。請參閱 的processData選項來防止此自動處理。對象必須是鍵/值對。如果 value是一個數組,jQuery基於傳統設置的值(如下所述)使用相同密鑰 序列化多個值。

+0

不錯的工作。在 – 2014-11-24 18:33:18

+0

之前沒有聽說過第二個選項,那麼控制器怎麼樣? – 2014-11-24 18:36:01

+0

控制器怎麼樣?它期望什麼? – epascarello 2014-11-24 18:38:04

0

您選擇$("form_status_update")不匹配DOMID。 ,它也不匹配html元素。 所以這肯定會給你一些(額外的)問題。

+0

我仍然沒有得到我的控制器中的變種,我已經變成$(「#form_status_update」) – 2014-11-24 18:46:17

0

不能你已經嘗試在你從ajax函數調用的php控制器上運行日期函數。 我沒有看到任何具體的原因,爲什麼你必須發送日期作爲JavaScript函數的輸入參數。

刪除日期變量和數據字段。 和你的php控制器。當你得到被調用的控制器時, 在php代碼中運行日期函數並使用該日期。