2016-06-28 100 views
0

我有一個流體模板。我必須加載一個選擇框來改變另一個選擇框。我使用ajax來調用第二個選擇框。 我的Ajax調用是這樣來自ajax的呼叫控制器 - Typo3

$('#bank_name_input').change(function(){ 
      var val = $('bank_name_input').val(); 
      var controllerpath ='<f:uri.action action="action_name" controller="controller_name" />'; 
      jQuery.ajax({ 
       type:"POST", 
       url: controllerpath, 
       data:{'uid':val}, 
       success:function(response) { 
        console.log(response); 
       }, 
      }); 
    }); 

它導致404 - 找不到網頁的錯誤。

+0

在瀏覽器(開發工具)的http請求中檢查您生成的URL並嘗試直接訪問它。到目前爲止,這不是一個真正的AJAX問題。此外,您的選擇器缺少第2行的散列。 – sven

+0

http:// localhost/my_instance /%3Cf:uri.action%20controller =%22Flight%22%20action =%22getPaymentMethod%22%20 /%3E - 這是網址生成。'#'不是問題。 –

+0

你能說出完整的URL嗎? – sven

回答

0

我得到了我的problem.The流體無法理解js.The流體URI另一種解決方案可以存儲在像

隱變量
<f:form.hidden name="uri_hidden" id="uri_hidden" value="<f:uri.action controller='your_controller' action='your_action' />" /> 

該值可以使用jquery進行訪問,並且該值可以作爲ajaxcall中的url傳遞。

$('#bank_name_input').change(function(){ 
      var val = $('#bank_name_input').val(); 
      var controllerpath = $("#uri_hidden").val(); 
      jQuery.ajax({ 
       type:"POST", 
       url: controllerpath, 
       data:{'uid':val}, 
       success:function(response) { 
        console.log(response); 
       }, 
      }); 
    }); 
1

真正的答案是,Fluid和JavaScript混合不好。 JS花括號需要被CDATA標籤轉義。爲了解決這個問題,請在不使用ViewHelper的情況下拼出URL,例如「?tx_myextension_myplugin [action] =。myAction & ...」。這會使用這些參數生成包含插件的當前頁面。

使用typeNum獲得乾淨的響應(不是整個頁面)。 https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Page/Index.html#typenum

參考見這個例子:

http://www.lukasjakob.com/typo3-ajax-request-with-pagetype/

+0

謝謝。它的工作原理。 –

+0

不客氣!以供將來參考:沒有必要感謝你對SO的評論。只是標記爲正確答案就夠了。 – sven