2017-03-01 70 views
2

我想使用jQuery後,但有問題的路徑部分,我使用的枝條語法。下面是代碼:枝條在jquery中無法讀取jQuery變量

messageSender.click(function(e) { 
      e.preventDefault(); 
      var threadId  = $(this).find('a').data('id'); 

      $.post("{{ path('messages_view', {id: "+threadId+"}) }}", function(data, status) { 
       console.log(data); 
      }); 
     }); 

這沒有得到threadId的價值,而不是它存儲的文本「」 +「線程ID」 +「」在路徑中的id變量。

+1

Twig無法讀取'threadId'(客戶端值)來創建路由。您必須檢索沒有參數的路由,然後使用JS或jQuery將threadId值「注入」到路由中,或使用FOSJsRoutingBundle來幫助您執行此操作。 – Veve

+0

感謝您的信息@Veve,我不知道FOSJsRoutingBundle。 –

回答

6

你的功能是在客戶端(JS)
和你的路徑是在服務器端(樹枝)

以至於不能正常工作。

要解決這個問題,您可以使用FOSJsRoutingBundledoc)。

與您的代碼,你可以有這樣的事情:

messageSender.click(function(e) { 
    e.preventDefault(); 
    var threadId  = $(this).find('a').data('id'); 
    var url = Routing.generate('messages_view', { id: threadId}); 

    $.post(url, function(data, status) { 
     console.log(data); 
    }); 
}); 
2

它不工作,因爲你是在服務器運行時(樹枝)的東西,這將是僅適用於客戶端運行時請求(JavaScript的)。

爲了解決這個問題,你可以爲每個a標籤設置小枝的「數據路徑」屬性,並生成路由而不是「data-id」屬性。 然後,在JavaScript中,您可以使用先前生成的整個路徑。