0

GET 要求を介して SKU を取得し、その製品の属性の一部を含む JSON オブジェクトを返すモジュールを作成しています。

私の indexController 関数コードは次のようになります

public function pinboardgetitemsAction(){
    $sku = $_GET[sku];

    $product = Mage::getModel('catalog/product')
            ->loadByAttribute('sku', $sku);

    $fullItem = array();

    $fullItem[0] = $product->getName();
    $fullItem[1] = $product->getFormatedPrice();
    $fullItem[2] = $product->getSmallImageUrl();

    echo json_encode($fullItem);

}

このリクエストをブラウザにロードすると、JSON オブジェクトが正しく返されます

http://www.jinkou.info/pinboard/index/pinboardgetitems?sku=50065

ただし、AJAX 要求 (jQuery を使用している) を実行すると、$sku が設定されず、致命的なエラーがスローされます。

この動作を確認する最も簡単な方法は、http://hurl.itを使用することです。

4

2 に答える 2

1

私のタイプミスのコメントは別として、params にアクセスする適切な方法は、リクエスト オブジェクトを使用することです。

$sku = $this->getRequest()->getParam('sku');
于 2012-09-12T01:31:54.653 に答える
0

ベンチマークは正解を書きました。

オフトップで申し訳ありませんが、次のコード:

echo json_encode($fullItem);

は適切ではありません。ヘッダーに json コンテンツ タイプを設定し、応答本文に json 本文を設定する必要があります。

/** @var $helper Mage_Core_Helper_Data */
$helper = Mage::helper('core');
$this->getResponse()->setHeader('Content-type', 'application/json')
$this->getResponse()->setBody($helper->jsonEncode($fullItem);
于 2012-09-12T06:42:28.233 に答える