2017-05-31 22 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 + "'