0

当我发现控制器中的以下代码破坏了 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(对我而言)在我的控制器的所有视图中导致页面转换错误。谢谢山姆!

4

1 回答 1

0

您可能需要以下内容:

$('#BagUserId').change(function()){
    $.post('bags/ajaxload', $('#my_form_id').serializeArray());
};
于 2013-04-16T09:44:08.607 回答