2012-09-12 68 views
0

我正在創建一個模塊,它通過GET請求獲取SKU並返回一個具有該產品屬性的JSON對象。Magento模塊GET請求不被接收

我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

+0

Typo? '$ sku = $ _GET [sku];'應該是'$ sku = $ _GET ['sku'];' – benmarks

+0

一種錯字,嘗試使用和不使用引號,都在瀏覽器中工作,而不是hurl.it –

回答

1

除了我錯字評論,訪問PARAMS適當的方式是通過請求對象:

$sku = $this->getRequest()->getParam('sku'); 
+0

謝謝,不知道這個功能。我換了「$ sku = $ _GET [sku];」用你提供的線,但仍然是相同的問題。 –

+0

然後你有一個數據問題。 – benmarks

+0

你的意思是哪些數據? $ sku沒有被設置在某些客戶端上,這表明除了數據 –

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); 
+0

之外的其他東西,謝謝,出於興趣這是否提供了任何性能改進? –

+0

我認爲不行,但在控制器的方法中使用'echo'是一種錯誤的邏輯。您應該將body設置爲響應對象。 –