2011-12-07 8 views
2

CIで、私はlogsig()のメソッドでコントローラを設定しました。次にindex()メソッドでstartpageというビューを呼び出しています。私の見解では、JSONを使用して私のビューと私のコントローラとの間の非同期呼び出しを行っています。どのようにコールをコーディングしますか?CodeIgniterでjQuery JSONを使用する

Contoller:

function logsig() { 
$this->load->view('startpage', $sync); 
header('Content-type:application/json'); ............. 

ビュー:

<script type="text/javascript" language="javascript"> 
$(document).ready(function() { 
    // blink script 
    $('#notice').blink(); 

    $("#action_button").click(function() { 
     var username = $("#username").val(); 
     var password = $("#password").val(); 
     var dataString = '&username=' + username + '&password=' + password; 
     if(username=='' || password=='') { 
      $('#success').fadeOut(400).hide(); 
      $('#error').fadeOut(400).show(); 
     } else { 
      $.ajax({ 
      type: "POST", 
      dataType: "JSON", 
      url: "processing/logsig.php", 
      data: dataString, 
      json: {session_state: true}, 
      success: function(data){ 
      if(data.session_state == true) { // true means user is logged in. 
       $("#main1").hide(); 
       $('#main1').load('<?=$sync?>').fadeIn(); 
      } else if(data.session_state == false) { // false means user is being registered. 
       $("#action_button").remove(); 
       $('#success').load('<?=$sync?>'); 
       // onLoad fadeIn 
      } 
      } 
     }); 
     } 
    }); 
}); 
</script> 
+0

間違っていますか?何がうまくいきませんか? –

+0

私は、ビューからlogsig()メソッドを呼び出す方法を理解できないようです。 –

答えて

8

あなたのコントローラが同時に表示リターンJSONを読み込むことはできません以下は、私が持っているコードです。 JSON部分を別の関数に分割します。

単純化しすぎの例は次のようになります。そして、

// Your existing function, but only displaying the view 
function logsig() { 
    $this->load->view('startpage', $sync); 
} 

// A new function whose sole purpose is to return JSON 
// Also notice we're using CI's Output class, a handy way to return JSON. 
// More info here: codeigniter.com/user_guide/libraries/output.html 
function get_json() { 
    $this->output->set_content_type('application/json') 
       ->set_output(json_encode(array('foo' => 'bar'))); 
} 

、あなたのJavaScriptで、get_jsonを呼び出す:

$.ajax({ 
    type: "POST", 
    dataType: "JSON", 
    url: "<?php echo site_url('processing/get_json.php'); ?>", 
    // ... truncated for brevity ... 
}); 
0

私が正しくあなたの質問を読めば、あなたのJSポストバックコードが動作しません:

url: "processing/logsig.php", 

お客様のCI URLは次のようになります。

url: <?php echo site_url("processing/logsig"); ?>, 

機能にURLヘルパーが必要です。

$this->load->helper('url'); 
0

この

コントローラ---------

public function AjaxTest() {  

     $rollNumber = $this->input->post('rollNumber'); 

     $query = $this->welcome_model->get_students_informationByRoll($rollNumber); 
     $array = array($query); 
     header('Content-Type: application/json', true); 
     echo json_encode($array); 
    } 

ビューを試してみてください-----

<?php echo validation_errors(); ?> 
     <?php echo form_open('welcome/SearchStudents'); ?> 

     <input type="text" id="txtSearchRoll" name="roll" value="" /> 
     <input type="submit" name="btnSubmit" value="Search Students" onclick="return CheckAjaxCall();"/> 

     <?php echo '</form>'; ?> 
:あなたの loadsig()関数の先頭であることのロード

スクリプト----------

function CheckAjaxCall() 
      { 
       $.ajax({ 
        type:'POST', 
        url:'<?php echo base_url(); ?>welcome/AjaxTest',      
        dataType:'json', 
        data:{rollNumber: $('#txtSearchRoll').val()},      
        cache:false, 
        success:function(aData){       
         //var a = aData[0];      
         //alert(a[0].roll); 

         $.map(aData, function (item) { 

          var stData = "<td>"+ item[0].roll +"</td>" + 
           " <td>"+item[0].Name+"</td>" + 
           "<td>"+item[0].Phone+"</td>" + 
           "<td> <a href=\"<?php echo base_url(); ?>welcome/EditStudents/"+ item[0].roll +"\">Edit</a> </td>"+ 
           "<td> <a href=\"<?php echo base_url(); ?>welcome/DeleteStudents/"+item[0].roll+"\">Delete</a> </td>"; 
          $('#tblStudent').text(""); 
          $('#tblStudent').append(stData); 
          //alert (item[0].roll + " " + item[0].Name); 
         }); 

         //alert(aData); 
        }, 
        error:function(){alert("Connection Is Not Available");} 
       }); 

       return false; 
      } 
関連する問題