他の誰かによって開発されたモジュールを持つクライアントのサイトでいくつかのものをデバッグしています。正しく動作していません。
コントローラーへの単純な Ajax 呼び出しがあります。
jQuery.ajax({
url : "http://www.site.com/quickview/index/cart",
complete : function(data){
// data.responseText is empty here.
jQuery('span.topLinks').replaceWith(data.responseText);
// This returns the data object with statusText = "error"
console.log(data);
}
})
コントローラーで単純なアクションを呼び出します。
public function cartAction()
{
// This log call never fires
Mage::log('foobar',null,'temp.log');
$this->loadLayout();
$Top = $this->getLayout()->getBlock('top.links')->toHtml();
$this->getResponse()->setBody($Top);
}
問題は、Ajax 呼び出しがコントローラーに到達しないことです。cartAction() 内に Mage::log 呼び出しを配置しましたが、起動されません。
Ajax 呼び出しに戻ろうとしているブロックをレンダリングする cartAction() を直接参照できるため、コントローラーは実際に適切に設定されています (エコーしても、ここではエコーされません)。
Ajax 呼び出し内に配置すると、次のようになります。
console.log(data);
statusText: "error" のオブジェクトを返します。
私は考えられる Ajax URL のすべての順列、絶対、相対、index.php を使用する、index.php を使用しないなどを試しました。毎回、data.responseText は単なる空の文字列です。
何かご意見は?