1

这是一个简单的嵌入,我不明白为什么会出现这个错误。

在动作课...

$TESTME = "what";

在视图中......

<script type="text/javascript">
    $(document).ready(function () {
        var someVale = "<?php echo $TESTME; ?>";
        alert(someVale);
    });
</script>

错误指向 var 赋值第一个引号之后

IE。var someVale = "< br />....

4

2 回答 2

4

您需要检查$TESTME. 它要么包含换行符,要么包含双引号。您看到的错误通常表明有问题的字符串在多行中被破坏,或者引号的数量不匹配。

在你的情况下,它可能是换行符......

var someVale = "< br />
<tag>
<tag>
<tag>";

这显然是行不通的,你需要处理字符串,以便最终得到......

var someVale = "< br />\n<tag>\n<tag>\n<tag>";

您可以使用类似...的方式转换您的 PHP 变量。

$TESTME = str_replace(chr(13), "\n", $TESTME);

(根据所涉及的操作系统,您的换行符也可能是chr(13) . chr(10).)

于 2013-01-24T15:25:46.597 回答
0

大多数时候,您可以避免使用回显变量,但有时这些回显字符串包含行终止符或引号(也称为字符串分隔符)。你可以测试,再测试,但你只需要保护自己免受“恶意”和“不可预测”的输入。在这个答案中,我使用了单引号和双引号
你可以str_replaceurlencode你的字符串,这将解决你的问题,但老实说......到底有什么问题json_encode?它非常适合服务器 <-> 客户端数据,就像您正在使用的那样:

var someVal = JSON.parse(<?= json_encode(array('data' => $someVar));?>).data;

所有需要转义的字符都将被转义......工作完成,并使用“本机”PHP函数。

更新:
正如下面的评论所示,由于范围问题,这可能是 PHP 错误。您应该声明一个属性,而不是在类中声明一个变量:

class Foo
{
    public $theProperty = null;
    public function __construct($argument = null)
    {
        $this->theProperty = $argument;//assign a variable, passed to a method to a property
        $someVar = 123;//this variable, along with $argument is GC'ed when this method returns
    }
}
//end of class
$instance = new Foo('Value of property');
echo $instance->theProperty;//echoes "value of property"
$anotherInstance = new Foo();//use default value
if ($anotherInstance->theProperty === null)
{//is true
    echo 'the property is null, default value';
    $anotherInstance->theProperty = 'Change a property';
}

这是,基本上它是如何工作的。我不知道你是如何使用你的视图脚本的,所以下面的代码可能不适用于你的情况(这是你可以在 Zend Framework 中的控制器中执行的操作):

public function someAction()
{
    $instance = new Foo('Foobar');
    $this->view->passedInstance = $instance;//pass the instance to the view
}

然后,在您的视图脚本中,您将执行以下操作:

var someVal = JSON.parse('<?= json_encode(array('data' => $this->passedInstance->someProperty)); ?>').data;

但是为了让我的答案适用于你的情况,我必须看看你是如何渲染视图的……你在使用框架吗?你使用的是经典的 MVC 模式,还是视图脚本只是你的东西include

于 2013-01-24T16:11:05.317 回答