【问题标题】:Accent / PHP / Javascript / Uncaught SyntaxError Unexpected IdentifierAccent / PHP / Javascript / Uncaught SyntaxError Unexpected Identifier
【发布时间】:2013-01-15 15:31:23
【问题描述】:

我的 PHP/JavaScript 和口音有问题。当我给出一个包含重音的变量时,JavaScript 的控制台会说:Uncaught SyntaxError Unexpected Identifier。

PHP:

foreach($credit as $k => $v)
{
    $id = $credit[$k]->id_credit;
    $nom = $credit[$k]->nom_credit;
    $prix = $credit[$k]->prix_credit;
    echo "<a onClick='modification(".$id.",".$nom.",".$prix.");'>" . Image::resize('images/credit/' . $credit[$k]->id_credit . "." . $credit[$k]->format_image_credit,100,100) . "</a>";
}

JavaScript:

function modification(id,nom,prix)
{
    var div = document.getElementById('modifCredit').style.display = 'block';
    alert(id + " " + nom + " " + prix);
}

没有$nom,一切正常。如果我更换:

 $nom = $credit[$k]->nom_credit;

作者:

$nom = "example";

我明白了:

未捕获的引用错误:示例未定义。

【问题讨论】:

  • 您发布的代码是 PHP 还是 JavaScript?不清楚哪个,第一个 foreach 看起来像 PHP,而函数看起来像 JavaScript。这是怎么回事? XD
  • 在参数周围添加引号:"&lt;a onClick='modification(\"".$id."\",\"".$nom."\",\"".$prix."\");'&gt;"

标签: php javascript function diacritics


【解决方案1】:

我认为你的 php 代码会产生类似的结果

<a onClick='modification(3, example, 25);'>

这使 javascript 解释器相信“示例”是变量的名称。您需要将其括在引号中,以便 javascript 将其解释为字符串。

<a onClick='modification(3, "example", 25);'>

我假设 $id 和 $prix 总是数字,并且数字不应被引用并且不会作为变量名出现在 javascript 解释器中。

当 $nom 包含重音符号时,您会收到不同的错误消息的原因是带有重音符号的变量名无效,解释器在发现变量未定义之前发现了无效标识符。

【讨论】:

  • 非常感谢!自 2 天以来,我一直坚持这一点。
【解决方案2】:

我认为问题是 JavaScript 找不到具有“示例”名称的变量,请尝试

$nom = "'例子'";

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多