【问题标题】:Datatable updating Entity through Ajax通过 Ajax 更新实体的数据表
【发布时间】:2012-10-03 19:29:35
【问题描述】:

当我尝试在 Symfony2 的视图中更新表中的元素时,我不断收到此错误:

无法更新单元格(服务器错误)

我不确定是什么问题。是不是路由不正确?

包含 javascript 和表格的 twig(view) 文件。

用于从控制器检索表数据的 javascript:

 <script language="JavaScript" type="text/javascript">
    $(document).ready(function () {
        $('#myDataTable').dataTable(

                {
                    "bSort": true,
                    "bFilter": true,
                    "bProcessing": true,
                    "bServerSide": true,
                    "sAjaxSource": "{{ path('CetiucValidateSurveyBundle_renderJson')}}"
                }

        ).makeEditable({

                sUpdateURL: "{{ path('CetiucValidateSurveyBundle_updateChange')}}"


        }
        );




    });
   </script>

控制器中更新实体的方法(在本例中进行了简化,它只从请求中检索数据)。

public function updateChangeAction(Request $request)
{

    $id = $_REQUEST['id'] ;
    $value = $_REQUEST['value'] ;
    $column = $_REQUEST['columnName'] ;
    $columnPosition = $_REQUEST['columnPosition'] ;
    $columnId = $_REQUEST['columnId'] ;
    $rowId = $_REQUEST['rowId'] ;


return $value;
}

这是更新操作的路由条目

CetiucValidateSurveyBundle_updateChange:
    defaults: { _controller: "CetiucValidateSurveyBundle:Validate:updateChangeAction", _format: json }
    pattern:   /update
    requirements: { _format: (json), _method: POST }

这是我调用更新方法时写的日志,我没有发现任何对我的问题有用的东西:

[2012-10-16 03:25:55] event.DEBUG:通知事件“kernel.request”到 听众 “Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onKernelRequest”。 [] [] [2012-10-16 03:25:55] request.INFO:匹配的路由 “CetiucValidateSurveyBundle_renderJson”(参数:“_controller”: "Cetiuc\Bundle\ValidateSurveyBundle\Controller\ValidateController::renderJsonAction", "_route": "CetiucValidateSurveyBundle_renderJson") [] [] [2012-10-16 03:25:55] event.DEBUG:向侦听器通知事件“kernel.request” “Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.controller”到监听器 “Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector::onKernelController”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.controller”到监听器 “Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.controller”到监听器 “Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.controller”到监听器 “Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.controller”到监听器 “JMS\SecurityExtraBundle\Controller\ControllerListener::onCoreController”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.response”到监听器 “Symfony\Component\Security\Http\Firewall\ContextListener::onKernelResponse”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.response”到监听器 “Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.response”到监听器 “Symfony\Bundle\SecurityBundle\EventListener\ResponseListener::onKernelResponse”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.response”到监听器 “Symfony\Bridge\Monolog\Handler\FirePHPHandler::onKernelResponse”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件“kernel.response” 给听众 “Sensio\Bundle\FrameworkExtraBundle\EventListener\CacheListener::onKernelResponse”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.response”到监听器 “Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse”。 [] [] [2012-10-16 03:25:55] event.DEBUG:通知事件 “kernel.response”到监听器 “Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse”。 [] []

【问题讨论】:

  • 你为什么一直使用 bServerSide=true?它与您的问题无关,但这又不是您所需要的

标签: jquery jquery-plugins symfony datagrid datatables


【解决方案1】:

好的,感谢卡洛斯。我做了一些研究,更新功能不需要任何 json 功能。

由于您的错误是说明 服务器错误,如果您能提供您的 symfony2 日志以便我们识别服务器端错误,那就太好了。

您的更新方法或路由有问题。

【讨论】:

  • 感谢@artworkad。我遵循了您的建议(带有 json 和路由的响应,但我仍然有相同的“无法更新单元格(服务器错误)”
  • 可编辑插件不需要 JSON。返回你收到的原始值
  • 谢谢卡洛斯。可能是我的路由有问题,我试试看日志里有没有发现。
  • 我在日志中没有发现任何有用的东西(我在上面发布了)。
  • 在调试模式下运行您的应用程序 yourproject/app_dev.php/ 然后查看开发日志
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2011-03-06
  • 2017-09-11
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 2013-11-07
相关资源
最近更新 更多