1. 项目用的YII框架,在module下面的Usertest.php有一个方法:
public function getTextArea($fieldName,$usertest_id) {
return CHtml::activeTextArea($this,$fieldName,array("name"=>$fieldName."_".$usertest_id,'style'=>'rows:3;cols:20;',"ajax" => array("type"=>"POST","url"=>"/usertest/ChangeComments", "data"=>array("usertest_id"=>$usertest_id,"usertest_comments"=>"js:this.value"),"success"=>"js:alert(\"Update comments success!\")")));
}
调用的地方在usertest/index.php里面,代码如下:
array(
'name' => 'usertest_comments',
'id' => 'usertest_comments',
'header'=>'Comments',
'type'=>'raw',
'value'=>'$data->getTextArea(\'usertest_comments\',$data->usertest_id)',
'htmlOptions'=>array('style'=>'width:100px;'),
),
开发在windows上,页面访问没有问题,访问路径是正确的: * /usertest/ChangeComments, 可是放到Linux上却变成:*/usertest/usertest/ChangeComments,导致修改不了数据。
2. 尝试了一下方法,,
①以为是单双引号的问题,代码改成下面这样:
public function getTextArea($fieldName,$usertest_id) {
return CHtml::activeTextArea($this,$fieldName,array("name"=>$fieldName."_".$usertest_id,"style"=>"rows:3;cols:20;","ajax" => array("type"=>"POST","url"=>"usertest/ChangeComments","data"=>array("usertest_id"=>$usertest_id,"usertest_comments"=>"js:this.value"),"success"=>"js:alert(\"Update comments success!\")")));
}
问题还是没有解决,又改成单引号,直接报错了。后面改回来时windows上竟然也报错了,跟Linux一样,无语了。
②把"url"=>"usertest/ChangeComments"改成"url"=>"/usertest/changeComments", Linux对大小写敏感,发现还是不行。
③后面改成这样子的:"url"=>"http://enduserfeedback.ta-mp.com:8080/usertest/changeComments",windows上没有问题了。结果放到Linux上,发现报错了,
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://172.24
百度了下,按照这个文章(点击打开链接)改了之后,可以了。后面把绝对路径去掉,只留下"dataType"=>"JSONP", 貌似也没有问题。
3. 反正程序总是来回折腾,最后就这样解决了问题