Tôi đang viết một mô-đun để thực hiện một cuộc gọi Ajax đơn giản trong Magento, nhưng tôi không thể làm việc đó cho đến nay - tôi cảm thấy mình thiếu một thành phần quan trọng ở đâu đó. Đây là những tập tin tôi hiện có:Sử dụng các cuộc gọi AJAX cơ bản trong Magento
Creare/Groupedajax/controllers/AjaxController.php:
class Creare_Groupedajax_AjaxController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
$this->renderLayout();
}
}
Creare/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>
Cuộc gọi Ajax của tôi:
$j.post("groupedajax/ajax/index", { size: $j(this).val()}, function(data) {
$j('#results').html(data);
});
bố trí/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>
tập tin .phtml tôi chỉ đơn giản là có 'test' trong nó vào lúc này. Tôi chỉ cần div kết quả của mình để trả về giá trị 'test'. Tôi chỉ muốn biết nếu tất cả các bit được đặt ra cho điều này để làm việc?
Đây là hướng dẫn, tôi đã theo: http://www.atwix.com/magento/ajax-requests-in-magento/
======================== SOLVED ======= =================
tôi chỉ cần một người dấu gạch chéo ở phần đầu của url của tôi:
$j.ajax({
url: "/groupedajax/ajax/index",
type: "POST",
data: "size="+$j(this).val(),
success: function(data) {
$j('#results').html(data);
}
});
Giải quyết sự cố thành các tác vụ nhỏ hơn. Điều gì sẽ xảy ra nếu bạn truy cập trực tiếp vào URL "example.com/groupedajax/ajax/index"? Kể từ khi jQuery được đưa ra một đường dẫn tương đối là nó truy cập vào URL chính xác? Sử dụng Firebug để kiểm tra. Bạn có một lớp khối khớp với kiểu 'groupedajax/groupedajax' hoặc có thể sử dụng' lõi/mẫu' đơn giản hơn không? – clockworkgeek
Khi tôi đến/groupedajax/ajax/index tôi thấy 'test' để nó hoạt động. Tôi đã thay đổi loại thành 'core/template' bởi vì tôi không có một lớp Block phù hợp mà là một sự giám sát về phía tôi. Tôi sẽ tiếp tục kiểm tra ... có lẽ cuộc gọi Jquery ajax ngừng hoạt động ... –
Tôi đã tìm ra - tập lệnh Jquery URL của tôi cần một dấu gạch chéo ở đầu: $ j.post ("/ groupedajax/ajax/chỉ mục ", {size: $ j (this) .val()}, hàm (dữ liệu) { $ j ('# results'). html (dữ liệu); }); –