如何正确连接来自Javascript和PHP的值?

时间:2017-05-31 14:30:39

标签: 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>元素的一部分。

上面的代码我收到了这个错误:

  

未捕获的SyntaxError:无效或意外的令牌

我可以帮忙解决这个问题吗?

更新

这是我渲染页面后代码的样子:

$(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;
        }
    });
});

注意函数$.extend如何正确关闭。 console.log(id)确实打印了options.rowId的值,但是这个值对超链接没有任何影响,因为您可能会注意到这是值/sf/distributor/show/ + options.rowId

$value中出现的内容是上面/sf/distributor/show/案例中的普通字符串。

2 个答案:

答案 0 :(得分:2)

您错过了双引号,并在options.rowId+周围结束并重新打开字符串:

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

应该是:

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

答案 1 :(得分:1)

在这里你缺少&#34;&#34;这样你就可以将options.rowId添加为字符串文本。

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