0

この状況で 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 ;
}

メソッドはモデルのここで失敗します。アクションの renderText が返されてコンソールにログインすると、SFDEBUG の HTMl が返されます。これは、失敗したことを示しています。

これが Ajax 呼び出しでない場合は、モデル メソッドが何を吐き出すかを確認してデバッグできますが、Ajax が混在していると少し面倒です。

ここで正確な答えを探しているわけではありませんが、symfony 環境で ajax リクエストをデバッグする方法について詳しく説明しているので、これをデバッグする方法について提案があれば、それは素晴らしいことです。

4

2 に答える 2

0

(サーバー上で XDEBUG が構成されていると仮定します)

AJAX リクエストによってデバッグ セッションをトリガーするには、追加の URL パラメータを送信するように何らかの方法でそのリクエストを作成する必要がありますXDEBUG_SESSION_START=1。あなたの例:

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

Cookie を介してトリガーすることもできますが、通常は URL パラメーターを追加する方が簡単です。

于 2016-03-16T15:52:13.140 に答える
0

ajax経由でセッションIDキーを使用してCookieを送信する必要があります

于 2015-11-06T05:16:47.927 に答える