【问题标题】:Debugging Ajax requests in a Symfony environment在 Symfony 环境中调试 Ajax 请求
【发布时间】:2012-12-13 17:51:51
【问题描述】:

不确定 SFDebug 在这种情况下是否有帮助。我正在使用 jQuery 制作 ajax 帖子。它在我的操作 URL 中检索 JSON 数据,然后调用执行操作的 Model 方法。直到我的操作 URL 的部分,以及对它的 jQuery 调用都可以正常工作。从客户端传输到服务器的数据得到了很好的接收,并且没有出错。

这是它调用模型上失败的方法的部分。我的 jQuery 方法如下所示:

$.post(url, jsonData, function(servermsg) { console.log(servermsg); }) ;

我的服务器动作是这样的

public function executeMyAjaxRequest(sfWebRequest $request)
{

   if($request->isXmlHttpRequest())
   {
      // process whatever
      $servermsg =  Doctrine_Core::getTable('table')->addDataToTable($dataArray);
      return $this->renderText($servermsg);
   }

       return false;
} 

Table.class.php文件中关注的方法如下:

public function addDataToTable($dataArray)
{
   // process $dataArray and retrieve the necessary data   

   $data = new Data();
   $data->field = $dataArray['field'];
    .
    .
    .
   $data->save();

   return $data->id ;
}

该方法在模型中失败,当action中的renderText返回并登录到控制台时,它返回SFDEBUG的HTMl。这表明它失败了。

如果这不是一个 Ajax 调用,我可以通过查看模型方法吐出的内容来调试它,但是在混合 Ajax 时这有点乏味。

不是在这里寻找确切的答案,而是更多关于如何在 symfony 环境中调试 ajax 请求,所以如果有关于如何调试的建议,那就太好了。

【问题讨论】:

    标签: debugging jquery symfony xmlhttprequest symfony-1.4


    【解决方案1】:

    您必须通过 ajax 发送带有会话 ide 密钥的 cookie

    【讨论】:

      【解决方案2】:

      (假设您在服务器上配置了 XDEBUG)

      为了通过 AJAX 请求触发调试会话,您必须以某种方式发出该请求以发送额外的 URL 参数 XDEBUG_SESSION_START=1。以您为例:

      $.post(url + '?XDEBUG_SESSION_START=1', jsonData, function(servermsg) { console.log(servermsg); }) ;

      您也可以通过 cookie 触发它,但附加 URL 参数通常更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多