我的目标是能够使用magento从html页面生成pdf。然而,我被困在成功做一个ajax请求。
我得到了ajax调用工作但是它没有返回我在Specsheetpdf.phtml文件中的内容。
我可能做错了,我对此很新。
在主题文件夹中的view.phtml文件中,我有这个代码,当单击一个按钮调用生成pdf的specsheetpdf.phtml文件时,它使用ajax:
jQuery(document).ready(function() {
jQuery( "input#printPDF_RDT" ).click(function() {
//get all value
var prod_name = jQuery("#product_name_RDT").text();
var prod_details = jQuery(".box-description .std").html();
var prod_image = jQuery(".product-image #image").attr('src');
//Before we get the options html we need to wrap it around a div to make things easy
jQuery("#product-options-wrapper").wrap("<div id='product_options_RDT'></div>");
//Now get the html in the created div
var prod_options = jQuery("#product_options_RDT").html();
var prod_sku = jQuery("#showsku").text();
// Do AJAX call to makePDF.php
jQuery.ajax({
type: "POST",
url: "<?php echo $this->getUrl('specsheetpdf/ajax/index') ?>",
data: { product_name: prod_name , product_details: prod_details,
product_image: prod_image, options_html : prod_options,
product_sku : prod_sku },
success: function(data) {
jQuery('#results_rdt').html(data);
}
});
});
});
作为测试,specsheetpdf.phtml应该回显产品名称,但是现在我得到一个空白的模板。如果这是有道理的。它返回网页的html,主体中没有内容。
以下是我所制作模块的代码:
应用/代码/本地/ Rdtmodules / Specsheetpdf /控制器/ AjaxController.php
class Rdtmodules_Specsheetpdf_AjaxController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
$this->renderLayout();
}
}
应用/代码/本地/ Rdtmodules / Specsheetpdf的/ etc / config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Rdtmodules_Specsheetpdf>
<version>0.1.0</version>
</Rdtmodules_Specsheetpdf>
</modules>
<frontend>
<routers>
<Specsheetpdf>
<use>standard</use>
<args>
<module>Rdtmodules_Specsheetpdf</module>
<frontName>specsheetpdf</frontName>
</args>
</Specsheetpdf>
</routers>
<layout>
<updates>
<specsheetpdf>
<file>specsheetpdf.xml</file>
</specsheetpdf>
</updates>
</layout>
</frontend>
</config>
应用的/ etc /模块/ Rdtmodules_Specsheetpdf.xml
<?xml version="1.0"?>
<config>
<modules>
<Rdtmodules_Specsheetpdf>
<active>true</active>
<codePool>local</codePool>
</Rdtmodules_Specsheetpdf>
</modules>
</config>
前端/默认/默认/布局/ specsheetpdf.xml
<?xml version="1.0"?>
<layout version="1.0">
<specsheetpdf_ajax_index>
<block type="specsheetpdf/specsheetpdf" name="root" output="toHtml" template="specsheetpdf/specsheetpdf.phtml" />
</specsheetpdf_ajax_index>
</layout>
前端/默认/默认/模板/ specsheetpdf / specsheetpdf.phtml
$product_name = $_POST['product_name'];
$product_details = $_POST['product_details'];
$product_image = $_POST['product_image'];
$options_html = $_POST['options_html'];
$product_sku = $_POST['product_sku'];
echo $product_name;
我做错了吗?非常感谢帮助。
答案 0 :(得分:0)
它有效:当我把信息放在这里时,我发现自己纠正了:l。 Welp希望这也有助于其他人:)