2012-03-06 62 views
0

我试图学习如何使用codeigniter内的JSON。我试图使用模型来运行ajax代码,但它不工作。Usng JSON in codeigniter与表单提交

我需要学习如何将变量传递给模型,然后退出;或者,如果那不正确,我需要学习正确的过程。以下是我的代码。

HTML

<div id="structures"> 
    <h1>Build</h1> 
    <form name="buildForm" id="buildForm" method="POST"> 
     <select name="buildID" class="buildClass"> 
     <option value="0" selected="selected" data-skip="1">Build a Structure</option> 
    <option name='Town Center' value='1' data-icon='../img/structures/tc.png' data-html-text='Town Center<i> 
     500 minutes<br>50000 gold</i>'>Town Center</option> 
    <option name='Barracks' value='2' data-icon='../img/structures/barracks.png' data-html-text='Barracks<i> 
     25 minutes<br>1500 gold</i>'>Barracks</option> 
    <option name='Dragon Roost' value='3' data-icon='../img/structures/droost.png' data-html-text='Dragon Roost<i> 
     200 minutes<br>5000 gold</i>'>Dragon Roost</option> 
    <option name='Mage Hall' value='4' data-icon='../img/structures/mage.png' data-html-text='Mage Hall<i> 
     40 minutes<br>300 gold</i>'>Mage Hall</option> 
    <option name='Test Lab' value='6' data-icon='../img/structures/testlab.png' data-html-text='Test Lab<i> 
     1 minutes<br>10 gold</i>'>Test Lab</option> 
     </select> 
     <div id="buildSubmit"> 
      <input id ="btnSubmit" class="button" type="submit" value="Submit"/> 
     </div> 
    </form> 
</div> 

这里是我的AJAX/JS/JSON 我想一个很简单的例子。我想将上面的选项(1-6)的值发布到模型函数insert_build。我不知道它是否这样做,因为我不能想到一个好方法来测试它。但是,如果它返回任何内容,我会提醒。我不是。

$(function(){ 
    $(".button").click(function(e, value){ 
     e.preventDefault(); 

     $.ajax({ 
     type: "POST", 
     url: "<?php $this->structure_model->insert_build() ?>",   //the script to call to get data   
     str_id: value, 
     dataType: 'json',    //data format  
     success: function(data)   //on receive of reply 
      { 
       alert("success!"); 
      } 
     }); 
}); 
}); 

型号代码

public function insert_build() 
     { 
      $str_id = $this->input->post('str_id'); 
      echo " TESTING $str_id"; 
     } 

任何帮助将不胜感激。为什么这不起作用?我仍然试图理解Codeigniter和JSON/JS的基本原理。

感谢

回答

2

url:你在你的JavaScript设置为你想要的AJAX提交时调用的实际功能。您需要有一个实际调用该功能的控制器,例如

url: "<?php echo base_url(); ?>/structure/insert/?str_id=" + $('#buildID').val(), 

此外,设置dataType:json意味着你期望从你的函数返回对被编码为JSON。

+0

谢谢!无论如何要做到这一点,而不需要javascript直接在页面源代码上? – 2012-03-06 19:12:47

+0

您可以在JavaScript变量中设置base_url,然后只包含一个具有ajax代码的js文件。 'var base_url ='<?php echo base_url(); ?>';'然后改变你的ajax'url'使用新的'base_url'变量 – 2012-03-06 19:14:31

+0

谢谢,我会试试看。然而,虽然我能够收到响应和警报,但“测试”它没有返回变量“str_id”。您是否可以编辑您的答案以包含该推理?谢谢! – 2012-03-06 19:17:32

0

也许改变这种:

url: "<?php echo $this->structure_model->insert_build() ?>" 
+0

如果您查看所有示例代码,这并不能解决任何问题。 – 2012-03-06 19:16:33