Вызов Ajax в модуль ничего не возвращает

#php #jquery #ajax #magento #wkhtmltopdf

#php #jquery #ajax #magento #wkhtmltopdf

Вопрос:

Моя цель здесь — иметь возможность генерировать PDF-файл из HTML-страницы с помощью magento. Однако я застрял при успешном выполнении ajax-запроса.

Я получил свой вызов ajax для работы, однако он не возвращает то, что у меня есть в моем файле Specsheetpdf.phtml.

Возможно, я делаю это неправильно, я довольно новичок в этом.

В файле view.phtml, который находится в папке темы, у меня есть этот код, который использует ajax при нажатии кнопки для вызова файла specsheetpdf.phtml, который генерирует pdf:

 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 веб-страницы без содержимого в теле.

Вот мой код для модуля, который я сделал:

app/code/local/Rdtmodules/Specsheetpdf/controllers/AjaxController.php

 class Rdtmodules_Specsheetpdf_AjaxController extends Mage_Core_Controller_Front_Action {

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

app/code/local/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>
  

app/etc/modules/Rdtmodules_Specsheetpdf.xml

 <?xml version="1.0"?>
<config>
    <modules>
        <Rdtmodules_Specsheetpdf>
             <active>true</active>
             <codePool>local</codePool>
        </Rdtmodules_Specsheetpdf>
    </modules>
</config>
  

frontend/default/default/layout/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>
  

интерфейс/по умолчанию/default/template/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;
  

Я что-то делаю не так? Был бы очень признателен за помощь.

Ответ №1:

Это сработало: l оказывается, когда я размещал здесь информацию, я исправился: l. Welp надеюсь, это поможет и кому-то еще 🙂