关于数据传递问题
本帖最后由 consatan 于 2010-3-31 01:14 编辑通过JSON编码的旧数据,传递到前台用input存储,然后再通过表单将旧数据的JSON编码 和 新数据的JSON编码一起提交到后台
有比较方便的数据传递方法吗??
控制器
<?php
class A extends Controller {
function A() {
parent::Controller();
}
function edit_info($id) {
$this->load->Model('A_MODEL');
$result = $this->A_MODEL->get_info($id);//return $this->db->query($sql)->result_array();
$data = array('old_values' => json_encode($result['old']),
'show_info' => $result['show']
);
$this->load->view('edit_info',$data');
}
function update_info() {
$new_values = $this->input->post('new_values');
$old_values = $this->input->post('old_values');
//dosomething...
}
}
?>
视图
<form method="POST" action="<?php echo site_url(array('A','update_info')) ?>">
<input type="hidden" id="old_values" name="old_values" />
<input type="hidden" id="new_values" name="new_values" />
someHTMLcode...
<script type="text/javascript" src="<?php echo base_url().'js/json2.js' ?>" ></script>
<script type="text/javascript">
<?php echo "var ov = (".$old_values.");\n"; ?>
//这里该怎么改?
//<input type="hidden" value="<?php echo $old_values ?>" />
//可以吗?
document.getElementById("old_values").value = JSON.stringify(ov);
function _form_sumbit(_form) {
var arr = new Array();
for(var i = 0; i < _from.getElementsByTags("input").length; i++) {
//dosomething...
}
document.getElementById("new_values").value = JSON.stringify(arr);
_from.submit();
}
</script>
<input type="button" id="_submit" name="_submit" />
</form>
用json格式传递数据再设置是可行的,
不过,
这种数据还是按常规方法传回视图比较合适
控制器中取到$data;
视图中把$var_name放到value中 用json格式传递数据再设置是可行的,
不过,
这种数据还是按常规方法传回视图比较合适
控制器中取到$data;
...
zycbob 发表于 2010-3-31 15:31 http://codeigniter.org.cn/forums/images/common/back.gif
如果控制器取到$data,但是存为数组的格式,那传到视图,视图该怎么再传回控制器呢?? <input type="text" id="username" name="username" value="<?php echo $username ?>" />
正常传回来啊
zycbob 发表于 2010-3-31 15:55 http://codeigniter.org.cn/forums/images/common/back.gif
不行,这样无法传递数据的
因为JSON的格式是类似
[{"id":"1","name":"xx","age":"23"},{"id":"2","name":"oo","age":"34"}]
这样的字符串
如果直接
<input type="hidden" id="x" name="x" value="<?php echo $json_data ?>" />
的话,则HTML就会变成
<input type="hidden" id="x" name="x" value="[{"id":"1","name":"xx","age":"23"},{"id":"2","name":"oo","age":"34"}]" />
这样再提交到后台时,数据就变为空了
print_r($_POST['x']);//显示为 =>
不过刚我突然想到...旧数据用来显示,但是传递到后台的新数据应该是和数据库中的旧数据对比才对啊...不应该是和前台保存的旧数据对比啊...
我之前想错了...所以JSON数据还是不传到前台了...直接前台把新的JSON数据传递过来,然后后台再获取数据库数据来进行对比了...
页:
[1]