2014-12-04 107 views
0

我創建了JavaScript驗證,其中傳遞了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()功能被解析爲字符串,可能有人能幫我解決這個複雜的局面?

+0

isset返回true/false,因此它是用於正常,如果你想要做什麼? – 2014-12-04 13:01:48

+0

AIUI你試圖確保PHP變量在傳遞給JS之前設置? – CD001 2014-12-04 13:22:36

回答

0

你必須把你的php標籤放在變量的周圍。 PHP不知道這個JavaScript函數應該做什麼。

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

問題是proveriPolje()是javascript函數,這整個代碼是在JavaScript中,在你的方式功能是在PHP – 2014-12-04 13:17:28

+0

不,它不是,''確保只有變量被視爲php代碼。該函數不應該在php標籤之間,否則該函數被視爲php代碼。 – Jerodev 2014-12-04 13:37:57

0

eval()?還是簡單的回聲? 既然你不打印它,這只是一個字符串 Btw這是一個文件,由PHP或單個HTML處理?我知道它是一個愚蠢的問題,但我剛剛看到了代碼從html運行的qiestion,這是問題的根源。

+0

''迴應標籤之間的變量。 :) – Jerodev 2014-12-04 13:05:49

+0

並且在服務器上啓用了這個短標記嗎? – 2014-12-04 13:06:41

+0

這是在新的PHP版本的服務器上默認設置的...你不需要指定這個 – 2014-12-04 13:08:22

1

看着它作爲原料PHP字符串的問題是在這裏:

「proveriPolje(這一點,isset({$驗證 [ 'txtUlica'] [ '選項'] [ '正則表達式']},

使用{打破字符串是在錯誤的地方,它不會爲函數工作本質上,你只是寫作「isset」作爲輸出字符串的一部分 - 嘗試這樣的事情(應該通過如果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') 
+0

關閉,但sintax錯誤 – 2014-12-04 14:03:32

+0

更新 - 我失去了括號的軌道...我還添加了'標記周圍的第一個參數 – CD001 2014-12-04 14:11:14