我有这个视图,我以 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']然后在视图中打印它?
答案 0 :(得分: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
}
}
答案 1 :(得分: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);
}