2017-03-01 76 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中,您可以使用先前生成的整个路径。