引用php和javascript包装在php函数中

时间:2012-12-07 03:53:17

标签: php jquery

使用jquery我这样做:

$(function() {
$('#iButton').change(function() {
    $.ajax({
       url: 'index.php?option=com_cameras&task=globalmotiondetection&id_hash=<?php echo $id_hash; ?>&global_monitoring='+ (this.checked ? 1 : 0) + '&format=raw'

    });
});
});

这很有效。但现在我把它放到一个php函数(Joomla编码)但无法弄清楚引号:

$doc->addScriptDeclaration('
$(function() {
$("#iButton").change(function() {
    $.ajax({
       url: "index.php?option=com_cameras&task=globalmotiondetection&id_hash='$id_hash'&global_monitoring="+ (this.checked ? 1 : 0) + "&format=raw"
    });
});

});
');

这给了我:解析错误:语法错误,网址行意外T_VARIABLE。不确定报价应该如何。我想我不能把$id_hash放在那里(我猜是因为错误)。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

要将变量连接成单引号字符串,可以使用连接运算符.

$doc->addScriptDeclaration('
$(function() {
$("#iButton").change(function() {
    $.ajax({
       url: "index.php?option=com_cameras&task=globalmotiondetection&id_hash=' . $id_hash . '&global_monitoring="+ (this.checked ? 1 : 0) + "&format=raw"
    });
});

});
');

或者,您可以使用双引号字符串,这允许您在内部插入变量:

$doc->addScriptDeclaration("
$(function() {
$('#iButton').change(function() {
    $.ajax({
       url: 'index.php?option=com_cameras&task=globalmotiondetection&id_hash=$id_hash&global_monitoring='+ (this.checked ? 1 : 0) + '&format=raw'
    });
});

});
");

答案 1 :(得分:0)

为了使其更简单,请使用Heredoc。见http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

$str = <<<EOT
$(function() {
    $("#iButton").change(function() {
        $.ajax({
           url: "index.php?option=com_cameras&task=globalmotiondetection&id_hash='$id_hash'&global_monitoring="+ (this.checked ? 1 : 0) + "&format=raw"
        });
    });
});

EOT;