Yii的rule()验证规则,虽然很方便但是需要提交表单之后,页面刷新完才会显示相关的信息,感觉把所有的验证全部放在最后,不是很用户友好,因为写错了,还要重新填写表单。
Ajax是异步传输的方式,于服务器和客户端之间。感觉中间人的角色。昨天看了有关ajax的基本知识,需要基本的JavaScript的语言知识,此外因为Yii很多用的是jQuery的方式,所以在Yii的View页面视图中用的是jQuery的方式进行描述。
有关ajax的知识,菜鸟教程和w3cschool都很详细,自己去搜一下就很好。
下面贴下控制器和视图的代码,因为用的还是Yii1.1版本,所以查找了很多的内容都不是很明确,今天下午终于调试成功,算是一个经验,如果日后需要用到,可以继续学习下去。
view部分的代码,为testAjax.php
<button onclick="test()" >测试</button>
<input id="testInput" />
<div id="myDiv"><h2>通过 AJAX 改变文本</h2></div>
<script type="text/javascript">
function test()
{
var testInput = document.getElementById("testInput").value;
htmlobj = $.ajax({
url:"/test/testAjax1",
type : 'POST',
data : {curAddr : testInput},
dataType : "text",
//contentType : 'application/x-www-form-urlencoded',
async : true,
success : function(mydata) {
//alert("success");
// alert(mydata);
//var show_data = "<h1>result:" + mydata + "</h1>";
$("#myDiv").html(mydata);
},
error : function() {
alert("calc failed");
}
});
}
</script>
Controller部分代码
class TestController extends Controller{
//这个是渲染视图的控制器
public function actionTestAjax(){
$this->render("testAjax");
}
//这个是与ajax交互的控制器
public function actionTestAjax1(){
if(isset($_POST['curAddr'])){
$id = $_POST["curAddr"];
echo "<div>更新成功$id</div>";
}
Yii::app()->end();
}
}
效果如下
在文本框输入内容后点击测试,文本内容更新