javascript问题中的PHP变量

时间:2014-12-04 12:58:41

标签: php

我创建了传递PHP变量的JavaScript验证。

onblur="<?= "proveriPolje(this, {$validate['txtUlica']['options']['regexp']}, '{$greske['txtUlica']}', '{$def['txtUlica']}')"; ?>"

但是在尝试验证PHP变量之前,在将它们传递给JavaScript之前设置:

  onblur="<?= "proveriPolje(this, isset({$validate['txtUlica']['options']['regexp']}, '{$greske['txtUlica']})', 'isset({$def['txtUlica']}'))"; ?>"

isset()函数被解析为字符串,有人可以帮我解决这种复杂情况吗?

3 个答案:

答案 0 :(得分:1)

将其视为原始PHP字符串,问题出在此处:

&#34; proveriPolje(此, isset({$ validate [&#39; txtUlica&#39;] [&#39; options&#39;] [&#39; regexp&# 39;]},

使用{打破字符串是错误的地方,它无论如何都不会为函数工作,实际上你只是在写#34; isset&#34;作为输出字符串的一部分 - 尝试这样的事情(如果PHP没有设置,应该将空字符串传递给JS):

onblur="<?= "proveriPolje(this, " 
    . "'" . ( isset($validate['txtUlica']['options']['regexp']) ? $validate['txtUlica']['options']['regexp'] : "" ) . "'"
    . ", '{$greske['txtUlica']}', "
    . "'" . ( isset($def['txtUlica']) ? $def['txtUlica'] : "" ) . "'"
    . ")"; ?>"

丑陋的罪,但它应该有用。

您最终应该使用JavaScript函数调用,如下所示:

proveriPolje(this, 'DATA FROM PHP VAR', 'DATA FROM PHP VAR', 'DATA FROM PHP VAR')

答案 1 :(得分:0)

你必须把你的php标签放在变量周围。 php无法知道这个javascript函数应该做什么。

onblur="proveriPolje(this, {<?= $validate['txtUlica']['options']['regexp'] ?>}, '{<?= $greske['txtUlica'] ?>}', '{<?= $def['txtUlica'] ?>}')"; ?>"

答案 2 :(得分:0)

的eval()?还是简单的回声? 既然你不打印它,这只是一个字符串 顺便说一句这是一个文件,由PHP或单个HTML处理?我知道它是一个愚蠢的问题,但我刚看到一个qiestion代码从html运行,这是问题的起源。