使用dataproxy方法会出错

时间:2013-09-02 16:45:13

标签: jquery jqgrid

我尝试使用dataProxy方法将参数和一个图像传输到我的服务器(jqgrid版本4.5.2)。
Firebug给出了一个错误:d.p.dataProxy未定义(jquery.jqGridmin.js第298行)。
这是代码:

.navGrid('#pager1',
        {edit:false,add:true,del:true,search:false,refresh:true},
        { 
          //edit 
        },
        {                     
            jqModal:true,
            resize:false,
            url:'url_1.php',                           
            reloadAftersubmit:true,
            closeAfterAdd:true,
            recreateForm:true,


            onInitializeForm: function (formid)
            {   
                $(formid).attr('method','POST');
                $(formid).attr('enctype','multipart/form-data');
                $(formid).attr('action','');    
            },
            useDataProxy:true,
            dataProxy: function (opts,act)
            {
                opts.url = 'url_2.php';
                opts.iframe = true;

                var $form = $('#FrmGrid_' + $(this).getGridParam('id'));

                //use normal ajax-call when no files to upload
                if($form.find(':file[value!=""]').size() == 0)
                {
                    $.ajax(opts);
                    return;
                }

                //Prevent non-file inputs double serialization
                var ele = $form.find(':input').not(':file');

                ele.each(function()
                {
                    $(this).data('name', $(this).attr('name'));
                    $(this).removeAttr('name');
                });

                //Send only previously generated data + files
                $form.ajaxSubmit(opts);

                //Set names back after form being submitted
                setTimeout(function()
                {
                    ele.each(function()
                    {
                        $(this).attr('name', $(this).data('name'));
                    });
                }, 200);
            },
            afterSubmit: function (reponse,postdata)
            {    
                alert('aftersubmit');
                return [true,''];   
            }
        }, // (Add Options)

缺少什么?
数据混合函数的断点永远不会被触发 由于这种方法没有记录,因此使用它并不容易!

1 个答案:

答案 0 :(得分:1)

回调函数dataProxy必须定义为jqGrid回调(请参阅here),而不是navGridprmEditprmAdd参数。您应该将dataProxy的代码移动到jqGrid选项列表中。选项useDataProxy在您的代码中用于正确的位置。有关使用的详细信息dataProxy,我会转发给jqGrid代码的the part