0

contactFormフォームでMYVARという名前のキーを収集するこのビューがあります

<form class="form-wrapper cf" id="contactForm">
   <input name="MYVAR" type="text" placeholder="DO_IT..." required>
   <button type="submit" id="btn_submit" >  DO IT </button>
</form>

次に、このビューには、このキーを ajax 経由でコントローラーにdataStringとして送信するスクリプトがあります。

<script type="text/javascript">
jQuery(function() {
    jQuery(".btn_submit").click(function() {
    var MYVAR       = jQuery("input#MYVAR").val();
    var dataString  = 'MYVAR='+ MYVAR;
    alert(dataString);
    jQuery.ajax({
        type: "POST",
        url: "<?php echo base_url()?>index.php/do_it/method/",
        data: dataString,
        success: function() {
            jQuery('#successMessage').html("<b><p style='color:#5b5b5b; float:left; margin-top:3px; padding-top:50px;'>success.</p></b><br/><br/>")
            .hide()
            .fadeIn(1500, function() {
            jQuery('#successMessage');
            });
        }
    });
    return false;
    });
});
</script>

メソッドdo_it内 のコントローラーで は、var MYVARを読み取ります

function method()
{   
  //posted var
  $key = $this->input->post('MYVAR');
  $this->load->model('mine_model');
  //get data according key variable 
  $data['result'] = $this->mine_model->get( array('data' => $MYVAR));
  //encode it? 
  echo json_encode($data); 
  //$this->load->view('view',$data);
}

しかし、何もしていません...

私は何が欠けていますか?

また、jQuery を使用してビューで $data ['result'] を受け取り、それをビューに出力する方法もわかりません。

4

2 に答える 2

1

一度このコードを試してください

jQuery(function() {
    jQuery(".btn_submit").click(function() {
        alert(jQuery("input#MYVAR").val());
        jQuery.ajax({
            type: "POST",
            url: "<?php echo base_url()?>index.php/do_it/method/",
            data: {MYVAR:jQuery("input#MYVAR").val()},
            success: function() {
                jQuery('#successMessage').html("<b><p style='color:#5b5b5b; float:left; margin-top:3px; padding-top:50px;'>success.</p></b><br/><br/>")
                .hide()
                .fadeIn(1500, function() {
                jQuery('#successMessage');
                });
            }
        });
        return false;
    });
});

コントローラーでは、このようにデータを送信するだけです* (すでに行っています) *

echo json_encode(array('success'=> 'true', 'data' => array(1,2,3)))

しかし、あなたの見解でsuccess()は、に変更する必要がありますsuccess(response)

jsonこのような結果を使用できます

success: function(response) {
    if(response.status){
        jQuery('#successMessage').html("<b><p style='color:#5b5b5b; float:left; margin-top:3px; padding-top:50px;'>success.</p></b><br/><br/>")
        .hide()
        .fadeIn(1500, function() {
        jQuery('#successMessage');
        });

        //response.data[0] gives 1
        //response.data[1] gives 2
        //response.data[2] gives 3
    }
}
于 2013-03-29T04:31:13.893 に答える
1

私はあなたが望むようにそれを行ういくつかのコードを持っています:

私のJS:

$(function() {
  $('#contactForm').submit(function() {
    var dataString = $(this).serialize();
    $.ajax({
      type : 'post',
      url  : '<?php echo base_url()?>index.php/do_it/method/',
      data : dataString,
      dataType : 'json',
      success : function(res) {
        console.log(res); // to see the object
        // your code here
      }
    });
    return false;
  });
});

私の PHP (CodeIgniter)

function method() { 
  $key = $this->input->post('MYVAR');
  $this->load->model('mine_model');
  $data['result'] = $this->mine_model->get( array('data' => $MYVAR));

  // set text compatible IE7, IE8
  header('Content-type: text/plain'); 
  // set json non IE
  header('Content-type: application/json'); 

  echo json_encode($data);
}
于 2013-03-29T04:42:12.930 に答える