2016-02-12 137 views
1

假設我有一個包含代碼行的URL http://example.com/product/12345。該URL是來自電子商務網站的產品頁面,並且在該頁面中有一個「添加到購物車」按鈕。從HTTP響應中解析JSON

當單擊該按鈕,它發送一個HTTP POST關於查看產品並返回以下JSON響應:

{ 
"products": [ 
{ 
"id":   722, 
"link":   "http://example.com/product/123123", 
"image_link": "http://example.com/prodcut/image/thumb.jpg", 
"image_width": "45", 
"image_height": "45", 
"quantity":  1, 
.... and so on... 

我想知道是否可以解析響應不知道這函數調用它,因爲:

  1. 該網頁是由
  2. 我一直試圖做的事情一樣多視圖(這是從不同的控制器渲染):

    console.log(response.products),或; 的console.log(產品)

但所有給 「未定義」 錯誤...

誰能幫助我在這?非常感謝。

+0

那是哪裏讓POST調用你的JS代碼? –

+0

@CharlieS這正是問題所在,我很難找到它。它被埋在其中一個視圖的某處。這就是爲什麼我想知道是否有可能解析JSON響應而不知道哪個JS函數會觸發POST調用? – Jeremy

+0

偶爾你正在尋找[this](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) –

回答

1

我可以指出您精確的上檔,這是否會幫助:

  1. /themes/yourtheme/js/modules/blockcart/ajax-cart.js如果不存在看/模塊/ blockcart/Ajax的cart.js

外表如下注釋行 「//發送AJAX請求到服務器」 的代碼

  • 以及形成在Smarty的模板文件JSON答案blockcart-json.tpl in /themes/yourtheme/modules/blockcart//modules/blockcart/
  • 所以,如果你將放在Ajax的cart.js的console.log在

    success: function(jsonData,textStatus,jqXHR) 
          { 
           console.log(jsonData.products); // not parsed json here of course 
           ... 
           }, 
    

    它應該工作。

    +0

    這是迄今爲止我能得到的最接近的答案,現在我可以訪問返回的JSON響應。感謝提示文件的確切位置。不過,我需要在不同的視圖中訪問該結果。我想我只需要做一個全局變量,以便我可以從不同的角度訪問它。謝謝。 – Jeremy

    0

    使用JSON.parse(響應)轉換成JSON對象,並轉換爲字符串再次使用JSON.stringify(響應)