2016-06-21 28 views
0

我的webapp有一個視圖,它在底部顯示一個表格(html表格)。 我需要根據select元素和AJAX響應以不同的格式顯示錶中的一些數據。它基本上涉及時區。根據AJAX響應在Zend視圖中更新表格

我在我的webapp中有很多JSON AJAX,它們都工作正常。

但是,在這個特殊的方面我真的很困惑。我嘗試了很多東西。

這裏的一個總結: - 該選擇元件具有運行一些javascript 一個onchange - JavaScript的運行兩個AJAX調用,一個用於JSON,一個用於HTML(如下所示)

$.ajax({ 
       url: URL, 
       type: "POST", 
       data: {timzone_option:option,lo_id:lo_id}, 
       dataType:'HTML', 
       success: function(response) 
       { 
     $('#c-content').html(data); 
       } //end success 

    }); 
  • 的JSON一個正常工作的HTML一個什麼都不做
  • 的URL被調用,觸發控制器內的功能,它具有以下功能:

    $this->_helper->layout->disableLayout(); 
    $option_id = $this->_getParam('timzone_option'); 
        $in_lo_id = $this->_getParam('lo_id'); 
    
    $this->_helper->layout->disableLayout(); 
    global $objSession; 
    if($this->view->user->user_id!='') 
    { 
         $recC = $this->modelSuper->Selectcallprod("CALL SP_GET_C_VIA_O('".$in_lo_id."')",'fetchall'); 
         $list_tmzn = getVal('timezones','zone_name', 'zone_id', $recC['listing_timezone']) ; 
         $user_tmzn = getVal('timezones','zone_name', 'zone_id', $this->view->user->user_timezone_id) ;  
         if($option_id == 1) 
          { 
         $numCount=0; 
         foreach($recC as $record) 
         { 
          $recC[$numCount]['loc_deadline_date']=convertUserDate($record['loc_deadline_date'], $this->view->user->user_datetimeformat, $list_tmzn,'UTC'); 
          $numCount++; 
         } 
          } 
          if($option_id == 2) 
          { 
         $numCount=0; 
         foreach($recC as $record) 
         { 
          $recC[$numCount]['loc_deadline_date']=convertUserDate($record['loc_deadline_date'], $this->view->user->user_datetimeformat, $user_tmzn,'UTC'); 
          $numCount++; 
         } 
          } 
        $this->view->c = $recC; 
    } else 
    die(); 
    echo $recC; 
    exit(); 
    

我的問題是,即使我已經正確地提到了DIVID,Zend公司/ PHP預期如何懂得「注入」 Ajax響應(這是一個數組是在表中顯示記錄)很好地放在桌子上?我試着將dataType從HTML更改爲JSON,兩者都沒有什麼區別。

我已驗證我的SQL存儲過程的語法和參數是否正常,JavaScript正在執行,但結果沒有返回到視圖,因爲我希望它們。

任何建議將受到感謝。謝謝。

回答

0

如果ajax $this->view->c不起作用。使用json方法,只需echo json_encode($recC)。現在您將可以通過javascript獲得回覆。只需在您的成功區塊中添加console.log(data)即可。

+0

我嘗試過,但不幸的是沒有喜悅。我現在已經獲得了我的代碼,控制器有一個包含ajax調用返回的值的數組,我只需要將結果傳遞給Zend中的ajax視圖,然後完成。 – ChrisFNZ

+0

請更新您的SO上的代碼。你有沒有在firbug控制檯中檢查你的輸出。 –

0

我原來的Javascript很好,問題出在控制器內的接收動作。

我改變了: $ list_tmzn = getVal('timezones','zone_name','zone_id',$ recC ['listing_timezone']);

: $ list_tmzn = getVal('timezones','zone_name','zone_id',$ recC [0] ['listing_timezone']);

我改進了兩個foreach塊以改善空值處理。

最後,我創建了一個與動作同名的接收Zend視圖。

在這一點上,我可以看到我的內容。我不得不整理一下ajax視圖,但現在它工作得非常好。