在 Fat-Free Framework 中使用 jTable 时失败

Fail when using jTable in Fat-Free Framework

提问人:Roberto Delgado 提问时间:4/27/2023 更新时间:5/18/2023 访问量:30

问:

我正在尝试在 Fat-Free Framework 中使用 jTable 加载数据,但我不能。网页上有一个按钮来执行上传:

<form>
  <fieldset>
    <legend>Requests - Filter</legend>
    <label for="modali">Modality:</label><input type="text" id="modali" name="modali" style="width: 5ex"/>
    <input type="submit" id="requestFilter" value="Search"/>
  </fieldset>
</form>
<!-- table -->
<div id="instancias"></div>

该页面还加载了一个名为“career.js”的javascript文件,该文件控制按钮操作和数据加载:

function career() {
  $('button, input[type="button"], input[type="reset"], input[type="submit"]').button();
  $('select')
    .selectmenu();
  $('input:text, input:password, input[type="email"]')
    .button()
    .off('mouseenter')
    .off('mousedown')
    .off('keydown')
    .css('cursor', 'default');

  //'instancias' (requests) table
  $('#instancias').jtable({
    defaultDateFormat:  'dd-mm-yy',
    defaultSorting:     'ins.dni ASC',
    deleteConfirmation: false,
    jqueryuiTheme:      true,
    multiSorting:       true,
    pageSize:           100,
    paging:             true,
    sorting:            true,
    title:              'Instancias',
    actions: {
      listAction: function (postData, jtParams) {
        return $.Deferred(function ($dfd) {
          $.ajax({
            url: '/cgt/antiguedad?menuOpt=cgt_ant&accion=select&jtStartIndex=' + jtParams.jtStartIndex + '&jtPageSize=' + jtParams.jtPageSize + '&jtSorting=' + jtParams.jtSorting,
            type: 'POST',
            dataType: 'json',
            data: postData,
            success: function (data) {
                $dfd.resolve(data);
            },
            error: function () {
                $dfd.reject();
            }
          });
        });
      },
      createAction: 'none',
      updateAction: 'none',
      deleteAction: 'none'
    },//end actions
    fields: {
      codpro: {title: 'Prv.',        width: '5%', options: {'03': 'Alicante', '12': 'Castellón', '46': 'Valencia'}},
      codcue: {title: 'Crp.',        width: '5%', key: true},
      dni:    {title: 'DNI',         width: '7%', key: true},
      apell1: {title: '1º Apellido', width: '10%'},
      apell2: {title: '2º Apellido', width: '10%'},
      nombre: {title: 'Nombre',      width: '10%'},
      codmod: {title: 'Mod.',        width: '5%', type: 'date'},
      calmod: {title: 'Mod. *',      width: '5%', type: 'date', edit: false},
      pto111: {title: '1.1.1',       width: '7%', defaultValue: 0},
      cal111: {title: '1.1.1 *',     width: '7%', defaultValue: 0, edit: false},
      pto112: {title: '1.1.2',       width: '7%', defaultValue: 0},
      cal112: {title: '1.1.2 *',     width: '7%', defaultValue: 0, edit: false}
    }//end fields
  });//end 'instancias' table

  //$('#instancias').jtable('load');

  //Filtering
  $('#requestFilter').click(function (e) {
    e.preventDefault();
    $('#instancias').jtable('load', {menuOpt:'cgt_ant', accion:'select', modali:$('#modali').val()});
  });//end filtering
}//end 'career' function

career();

但是,由于某种原因,当单击按钮时,我总是收到此jTable错误:“与服务器通信时发生错误。

我的路由.ini文件包含以下内容:

...
GET  /cgt/antiguedad=Gtc->career
POST /cgt/antiguedad [ajax] = Gtc->career
...

但似乎从未达到这一点。

欢迎任何帮助。提前致谢。

注意:如果我将职业.js网址直接粘贴到浏览器(http://localhost:8080/preceptor/cgt/antiguedad?menuOpt=cgt_ant&accion=select)中,则会获得数据。

我尝试将URL字符串设置为listAction,但没有结果。

php 无脂肪框架 jquery-jtable

评论

0赞 Rayne 4/29/2023
请使用浏览器的 Web 开发人员工具调查此问题。我希望这将有助于解决问题。

答:

0赞 ikkez 5/18/2023 #1

您的 POST 路由仅设置为 Ajax。因此,请确保 JS 中的 ajax 调用确实发送了以下标头:

X-Requested-With: XMLHttpRequest

此外,通过 post 发送 json 是非标准的,可能需要您以不同的方式处理传入的数据。从 BODY 框架 var 自行解析 json,或发送带有内容类型标头的 ajax 请求,或者application/x-www-form-encodedmultipart/form-data