我是Yii的新手并且有一个问题:我正在从Jquery Mobile应用程序向Yii WorkerController的actionJSON()函数发送一个ajax POST请求(带有firstname和lastname参数)。此函数(操作)使用提交的firstname和lastname POST值的列值检索worker模型。所以这里是代码 - 问题到底是我的onSuccess和onError方法都没有在jquery中调用。
JQuery Mobile -
$(document).ready(function() {
$("#submit").click(function(){
var formData = $("#callAjaxForm").serialize();
$.ajax({
type: "POST",
url: "localhost/myYiiVodovod1/index.php?r=site/json",
//crossDomain: true,
cache: false,
data: formData,
//dataType : 'json',
success: onSuccess,
error: onError
});
return false;
});
});
Yii workerController - 我不确定findByAttribute()是否正确:
public function actionJson(){
if((isset($_POST['firstName']) && isset($_POST['lastName']))){
header('Content-type: application/json');
$model=$this->loadModelTwo($_POST['firstName'],$_POST['lastName']);
echo CJSON::encode($model);
}
Yii::app()->end();
}
public function loadModelTwo($fname,$lname){
$model = Worker::model()->findByAttributes(array('first_name' => $fname, 'last_name' => $lname));
if($model===null){
throw new CHttpException(404,'The requested page does not exist.');
}
return $model;
}
感谢。
答案 0 :(得分:0)
我认为你的问题很简单,除非你有错字。您说actionJson
位于workerContoller
,但您的ajax调用是localhost/myYiiVodovod1/index.php?r=site/json
,因此除非您使用特殊的URL映射,否则它应该点击siteController
。很可能你只需要在你的ajax电话上更正你的网址。
同样在处理ajax调用时,安装Firebug或其他插件总是很好,这样你就可以看到ajax调用和响应。