2017-05-31 20 views
0

过去两个小时我一直在为此苦苦挣扎,而且我无法让它正常工作。看看下面的代码:如何正确连接来自Javascript和PHP的值?

$js = '$.extend($.fn.fmatter , { 
      userActions : function(cellvalue, options, rowData, addOrEdit) { 
      var data = cellvalue.split("|"); 
      var id = options.rowId; 
      var actions = "";'; 

foreach ($editorActions as $linkType => $value) { 
    switch ($linkType) { 
     case 'view': 
      $js .= "if(data[1] == 1) { 
         actions += \"<a class='actionimage' href='" . $value . " + options.rowId' title='" . $this->translate->_e('View') . "' onClick='load_start();'><img src='/images/icons/16x16/document_view.png' width='16' height='16' alt='' /></a>\"; 
        }"; 
    } 

    break; 
} 

正如你可以看到id是Javascript和$value即将从PHP来的值。这样做是为了得到一个超级链接,例如:

$value = "/route/to/function/"; 
id = 19009; // I've omitted the $ sign since this var is coming from JS 

var href = "' . $value . '" + id;' 

然后我需要使用href VAR的定义后右图所示的<a>元素的一部分。

用我上面的代码我收到此错误:

Uncaught SyntaxError: Invalid or unexpected token

我能得到一些帮助,得到这个权利?

UPDATE:

这是怎样的代码看起来像后,我渲染页面:函数如何$.extend接近正常

$(function() { 
    $.extend($.fn.fmatter, { 
     userActions: function (cellvalue, options, rowdata) { 
      var data = cellvalue.split('|'); 
      var id = options.rowId; 
      var actions = ''; 

      console.log(id); 
      if (data[1] == 1) { 
       actions += "<a class='actionimage' href='/sf/distributor/show/ + options.rowId' title='View' onClick='load_start();'><img src='/images/icons/16x16/document_view.png' width='16' height='16' alt='' /></a>"; 
      } 

      return actions; 
     } 
    }); 
}); 

通知。 console.log(id)确实打印了options.rowId的值,但是此值对超链接没有任何影响,因为您可能会注意到这是值/sf/distributor/show/ + options.rowId

$value中的内容是在上述情况下的普通字符串/sf/distributor/show/

+0

@Carcigenicate这将呈现作为一个Javascript代码的视图后,所以'ID'将有意义 – ReynierPM

+5

从来没有混合php与JS - 这是不好的做法,应该不惜一切代价避免。例如。你可以添加数据标签到DOM元素来获取你的PHP数据,并将其分配给一个JS VAR使用.. – ThisGuyHasTwoThumbs

+1

你在哪一行越未捕获SyntaxError –

回答

2

你错过了双引号,结束并重新打开各地options.rowId的字符串,并以+

actions += \"<a class='actionimage' href='" . $value . " + options.rowId' 

它应该是:

actions += \"<a class='actionimage' href='" . $value . "\" + options.rowId + \"' 
1

在这里,你缺少“”和那种方式你添加options.rowId作为一个字符串文本。

href='/sf/distributor/show/" + options.rowId + "'