2014-11-24 277 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代码中运行日期函数并使用该日期。