当我发现控制器中的以下代码破坏了 Jquery Mobile 时,我一直试图弄清楚为什么我的某些页面无法使用 Jquery Mobile 的页面转换:
public $components = array(
'RequestHandler');
public $helpers = array('Js');
我将它包含在我的控制器中,用于使用 JSHelper 运行的 ajax 函数,但如果可以避免的话,使用 Jquery Mobile 比使用 JSHelper 对我来说更重要。我需要一些帮助 a.) 修复 jquery mobile 以使用 JS Helper,或者 b.) 使用 Jquery 编写以下函数以完全避免 JSHelper:
<?php
$this->Js->get('#BagUserId')->event('change',
$this->Js->request(array(
'controller'=>'bags',
'action'=>'ajaxload'
), array(
'update'=>'#user-info',
'async' => true,
'method' => 'post',
'dataExpression'=>true,
'data'=> $this->Js->serializeForm(array(
'isForm' => true,
'inline' => true
)),
))
);
?>
*编辑* *
根据 Sam 的回答,我得出以下结论:
$('#BagUserId').change(function(){
var myData = $('#BagUserId').serialize();
$.ajax({
dataType: 'html',
type: "POST",
evalScripts: true,
async: true,
url: myBaseUrl + 'bags/ajaxload',
data: myData,
success: function (data){
$('#user-info').html(data);
},
error: function(){
alert('failure');
},
});
});
要使 url 正常工作,请在加载其他脚本之前将其包含在默认视图的头部中:
<script type="text/javascript">var myBaseUrl = '<?php echo $this->Html->url('/'); ?>';</script>`
通过这种方式,您可以避免 CakePHP 中的 JsHelper(对我而言)在我的控制器的所有视图中导致页面转换错误。谢谢山姆!