2012-01-12 17 views
21

Magentoで簡単なAjax呼び出しを実行するモジュールを作成していますが、これまでのところ動作させることができません。これらは私が現在持っているファイルです。Magento内で基本的なAJAX呼び出しを使用する

クレアーレ/ Groupedajax /コントローラ/ AjaxController.php:

class Creare_Groupedajax_AjaxController extends Mage_Core_Controller_Front_Action { 

    public function indexAction() { 
     $this->loadLayout(); 
     $this->renderLayout(); 
    } 
} 

クレアーレ/ Groupedajaxの/ etc/config.xmlに:

<?xml version="1.0"?> 
<config> 
    <modules> 
    <Creare_Groupedajax> 
     <version>0.1.0</version> 
    </Creare_Groupedajax> 
    </modules> 
    <frontend> 
    <routers> 
     <groupedajax> 
     <use>standard</use> 
     <args> 
      <module>Creare_Groupedajax</module> 
      <frontName>groupedajax</frontName> 
     </args> 
     </groupedajax> 
    </routers> 
    <layout> 
     <updates> 
     <groupedajax> 
      <file>groupedajax.xml</file> 
     </groupedajax> 
     </updates> 
    </layout> 
    </frontend> 
</config> 

My Ajax Call:

$j.post("groupedajax/ajax/index", { size: $j(this).val()}, function(data) { 
     $j('#results').html(data); 
    }); 

レイアウト/ groupedajax.xml:

<?xml version="1.0"?> 
<layout version="1.0"> 
    <groupedajax_ajax_index> 
    <block type="groupedajax/groupedajax" name="root" output="toHtml" template="groupedajax/groupedajax.phtml" /> 
    </groupedajax_ajax_index> 
</layout> 

私.phtmlのファイルは、単に現時点ではそれで 'テスト' を持っています。私は 'テスト'の値を返すために私の結果divが必要です。私はちょうどこれが機能するためにすべてのビットがあるかどうかを知りたいですか?

これは私が従っているチュートリアルです:======= http://www.atwix.com/magento/ajax-requests-in-magento/

========================解決しよう=================

は、私はちょうど私のURLの先頭にスラッシュが必要:

$j.ajax({ 
     url: "/groupedajax/ajax/index", 
     type: "POST", 
     data: "size="+$j(this).val(), 
     success: function(data) { 
     $j('#results').html(data); 
     } 
    }); 
+0

問題を小さなタスクに分割します。 「example.com/groupedajax/ajax/index」というURLに直接アクセスするとどうなりますか? jQueryには相対パスが指定されているため、正しいURLにアクセスしていますか? Firebugを使って確認してください。タイプ 'groupedajax/groupedajax'にマッチするブロッククラスを持っていますか、より単純な' core/template'を代わりに使うことができますか? – clockworkgeek

+0

/groupedajax/ajax/indexにアクセスしたとき、私は 'test'と表示されているので動作しています。私は自分の見落としであるBlockクラスがないので、型を 'core/template'に変更しました。私はチェックしています...おそらくJqueryのAJAX呼び出しが動作を停止しました... –

+0

私はそれを理解しました - 私のJqueryのURLスクリプトは最初にスラッシュを必要としました: $ j.post( "/ groupedajax/ajax/(数値); html(データ); });} {{ –

答えて

22

使いのブラウザではJavaScriptが出力されている場合.phtmlテンプレートファイルの場合は、a convenience functionを使用してURLを完全修飾してから安全なWA yを進める。

$j.ajax({ 
    url: "<?php echo $this->getUrl('groupedajax/ajax/index') ?>", 
    type: "POST", 
    data: "size="+$j(this).val(), 
    success: function(data) { 
    $j('#results').html(data); 
    } 
}); 
+1

優れている、それは解決策です!ありがとうございました! –

+0

説明付き完璧な答え! +1 :) – SagarPPanchal

関連する問題