2012-01-12 33 views
21

के भीतर मूल AJAX कॉल का उपयोग करना मैं Magento में एक साधारण अजाक्स कॉल करने के लिए एक मॉड्यूल लिख रहा हूं, लेकिन मैं इसे अब तक काम करने में असमर्थ हूं - मुझे लगता है कि मुझे कहीं भी एक महत्वपूर्ण घटक याद आ रहा है।/AjaxController.phpमैगेंटो

संपादित/Groupedajax/नियंत्रकों:

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> 

इन फ़ाइलों को मैं वर्तमान में कर रहे हैं मेरा अजाक्स कॉल:

$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/

======================== हल ======= =================

मैं बस अपना यूआरएल की शुरुआत में फॉरवर्ड स्लैश की जरूरत:

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

समस्या को छोटे कार्यों में तोड़ दें। यदि आप URL "example.com/groupedajax/ajax/index" को सीधे एक्सेस करते हैं तो क्या होता है? चूंकि jQuery को एक सापेक्ष पथ दिया गया है, यह सही यूआरएल तक पहुंच रहा है? जांचने के लिए फायरबग का प्रयोग करें। क्या आपके पास एक ब्लॉक क्लास है जो 'groupedajax/groupedajax' प्रकार से मेल खाती है या इसके बजाय सरल 'कोर/टेम्पलेट' का उपयोग किया जा सकता है? – clockworkgeek

+0

जब मुझे/groupedajax/AJAX/अनुक्रमणिका में मिला तो मुझे 'परीक्षण' दिखाई देता है ताकि यह काम कर रहा हो। मैंने टाइप को 'कोर/टेम्पलेट' में बदल दिया है क्योंकि मेरे पास मेलिंग ब्लॉक क्लास नहीं है जो मेरे हिस्से पर एक निरीक्षण था। मैं जांच करूँगा ... शायद jquery AJAX कॉल ने काम करना बंद कर दिया है ... –

+0

मैंने इसे समझ लिया है - मेरी Jquery यूआरएल स्क्रिप्ट को शुरुआत में आगे की स्लैश की आवश्यकता है: $ j.post ("/ groupedajax/AJAX/इंडेक्स ", {आकार: $ जे (यह) .val()}, फ़ंक्शन (डेटा) { $ जे ('# परिणाम')। एचटीएमएल (डेटा); }); –

उत्तर

22

अपने जावास्क्रिप्ट एक से उत्पादन किया जा रहा है, तो .phtml टेम्पलेट फ़ाइल तो आप URL को पूरी तरह से योग्य बनाने के लिए a convenience function का उपयोग कर सकते हैं जो तब सबसे सुरक्षित वाए होगा आगे बढ़ने के लिए 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

संबंधित मुद्दे