为什么我仍然会收到未定义的错误?

时间:2014-06-06 19:10:55

标签: javascript php jquery jquery-datatables

事实证明,我需要将loginName作为第一个URL参数传递,ID作为第二个传递,但下面的JavaScript代码仍无法正常工作。

 return "<a target='tab' data-tab-name='#RequestDetails' data-tab-index='2' href='viewDetails.php?loginName="
        + <?php echo $user; ?> + "&ID=" + oObj.aData["ID"] + "'> " + oObj.aData["ID"] + " </a>";

它返回了我之前遇到的同样错误。

我们希望URL参数的值与此类似:

http://viewDetails.php?loginName="john.doe&ID=2984

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我猜这是一个JS return,这意味着:

 + <?php echo $user; ?> + 

会产生类似的东西:

var foo = "...." + name_of_user + "....";

并被视为未定义的变量。你可能想要

var foo = "..." + <?php echo json_encode($user); ?> + "...";

会产生

var foo = "..." + "name_of_user" + "...";

并被视为常规字符串。

答案 1 :(得分:2)

除非您的$name是一个数字,否则您输出的JavaScript认为是变量名称 - 查看渲染结果始终很重要:

return "<a target='tab' data-tab-name='#RequestDetails' data-tab-index='2' href='viewDetails.php?loginName="
    + john.doe + "&ID=" + oObj.aData["ID"] + "'> " + oObj.aData["ID"] + " </a>";
//    ^^^^^^^^

看到了吗? JavaScript正在寻找一个名为john的对象,其属性为doe

要将PHP变量传递给JavaScript,请使用json_encode,如下所示:

return "<a target='tab' data-tab-name='#RequestDetails' data-tab-index='2' href='viewDetails.php?loginName="
    + <?php echo json_encode($user); ?> + "&ID=" + oObj.aData["ID"] + "'> " + oObj.aData["ID"] + " </a>";

这应该可行!