JavaScript:SyntaxError:missing)参数列表后-如何在php中正确转义js?

JavaScript:SyntaxError:missing)参数列表后-如何在php中正确转义js?,javascript,php,jquery,Javascript,Php,Jquery,我很难在php文件中转义此js函数: 它返回错误: JavaScript:SyntaxError:missing)在参数列表之后 代码如下: echo "<a href=\"\" onClick=\"show_confirmation('",$messages['deleting_message'],"', '",$messages['close'],"', 'show_hide('confirmation');', '",$lang['delete'],"', 'redirect_com

我很难在php文件中转义此js函数: 它返回错误: JavaScript:SyntaxError:missing)在参数列表之后 代码如下:

echo "<a href=\"\" onClick=\"show_confirmation('",$messages['deleting_message'],"', '",$messages['close'],"', 'show_hide('confirmation');', '",$lang['delete'],"', 'redirect_communicator('",$fullurl,"');'); return false;\">Delete</a>";
echo”“;
基本上这是一个有5个参数的js函数,其中一些也是函数,这就是问题所在。所有变量,如$messages[]都是语言定义的变量。。错误显示最后一个参数-函数重定向_communicator()

你能告诉我什么是错的以及如何逃避吗? 谢谢你的建议

编辑: 我也试过:

<a href="" onClick="show_confirmation('<?php echo $messages['deleting_message'];?>', '<?php echo $messages['close'];?>', show_hide('confirmation');, '<?php echo $lang['delete'];?>', redirect_communicator('sda');) return false;">delete</a>              


还是同样的错误。。当我添加json_encode时,会出现另一个错误。

像这样混合语言总是很难理解,而且很少是一个好主意

但是,如果您需要这样做,您可以使用
sprintf
稍微澄清一下:

echo sprintf(
    "<a href=\"\" onClick=\"show_confirmation('%s', '%s', show_hide('confirmation'), '%s', redirect_communicator('%s')); return false;\">Delete</a>",
    $messages['deleting_message'],
    $messages['close'],
    $lang['delete'],
    $fullurl
);
echo sprintf(
"",
$messages['deleting_message'],
$messages['close'],
$lang['delete'],
$fullurl
);

像这样混合语言总是很难理解,而且很少是个好主意

但是,如果您需要这样做,您可以使用
sprintf
稍微澄清一下:

echo sprintf(
    "<a href=\"\" onClick=\"show_confirmation('%s', '%s', show_hide('confirmation'), '%s', redirect_communicator('%s')); return false;\">Delete</a>",
    $messages['deleting_message'],
    $messages['close'],
    $lang['delete'],
    $fullurl
);
echo sprintf(
"",
$messages['deleting_message'],
$messages['close'],
$lang['delete'],
$fullurl
);

永远不要在没有json_encode的情况下将php中的文本转储到javascript上下文中。这是一个很好的观点,但在我将json_encode()添加到所有php变量后,我遇到了另一个错误:show_confirmation中的未终止字符串,然后查看生成的页面,并修复语法错误。您正在使用php生成html+js,并且必须确保php在输出到的上下文中正确地输出内容。不要在没有json_encode的情况下将php中的文本转储到javascript上下文中。这是一个很好的观点,但在我将json_encode()添加到所有php变量后,我遇到了另一个错误:show_confirmation中的未终止字符串,然后查看生成的页面,并修复语法错误。您正在使用php生成html+js,并且必须确保php在输出到的上下文中正确地输出内容。