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

除了我的错字评论之外,访问参数的适当方法是通过请求对象:

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

benmarks写了正确的答案。

对不起offtop,但下一个代码:

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 回答