2012-03-06 6 views
0

codeigniter内からJSONを使用する方法を学びたいと思っています。私はajaxコードを実行するためにモデルを使用しようとしていますが、動作しません。フォーム提出時にJSONとコードネームを使用する

変数をモデルに渡して戻す方法を知る必要があります。それが間違っていれば、私は正しいプロセスを学ぶ必要があります。以下は私のコードです。

<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> 

HTMLはここで私は非常に簡単な例をしようとしている私のAjax/JS/JSON です。私は上記のOPTION(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の基本を理解しようとしています。あなたはJavaScriptで設定しているurl:あなたはアヤックスが提出されたときに呼び出すしたいとしている実際の関数である

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

答えて

2

おかげ

+0

ありがとう!とにかくこれを行うにはjavascriptを直接ページのソースにする必要はありませんか? –

+0

javascript変数にbase_urlを設定してから、ajaxコードを持つjsファイルをインクルードするだけです。 'var base_url = '<?php echo base_url(); ?> '; '新しい' base_url'変数を使用するようにあなたのajax 'url'を変更してください –

+0

ありがとう、私はそれを試みます。しかし、私は応答とアラートを受け取ることができましたが、 "テスト"は変数 "str_id"を返していません。その推論を含むように回答を編集できるでしょうか?ありがとうございました! –

0

は多分これを変更します。実際にその関数を呼び出すコントローラーが必要です。 jsondataType:を設定することも

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

は、あなたがJSONとしてエンコードされるように、あなたの関数から返された何期待していることを意味します。

+0

すべてのサンプルコードを見ると、これは何も解決しません。 –

関連する問題