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