2011-01-05 79 views
3

即時消息試圖做的是在jquery附加屬性中使用php include。是這樣的:使用php包括在jquery中

$('a.popup[href^=#]').click(function() { 
$('body').append('<div id="content" class="popup_block"><?php include(SITE_URL . 'activity/popup.php') ?></div>'); 

我的腳本是一個PHP文件,服務器端,這樣我就可以做到這一點,但林不知道如何去做。當涉及到HTML,CSS等我可以在PHP文件中結合它和PHP,但是當涉及到JavaScript,其引用混淆了我,什麼時候以及如何使用括號。這聽起來可能令人困惑。無論如何,CDATA與它有什麼關係?我以前從未使用過,但我應該至少了解它的用途。

回答

4

PHP解釋器只會查找<?php?>標籤並嘗試評估其中的任何內容。它並不關心周圍的報價。你需要確保儘管PHP所做的結果是有效的Javascript。

var foo = '<?php include 'foo.php'; ?>'; 

成爲

var foo = 'This is the content of foo.php.'; 

PHP是用它做了。

如果有任何foo.php報價,有可能成爲這樣的:

var foo = 'This is the 'content' of foo.php.'; 

這是無效的JavaScript語法。您需要轉義可能導致此類無效語法的任何字符foo.php,例如addslashes。雖然這可能非常麻煩,所以我建議先尋找替代方案。

可以使用JSON,這絕對是語法安全編碼值:在代碼

var foo = <?php echo json_encode("Some string with 'quotes'."); ?>; 

生成代碼始終是棘手的,試試看能不能做到這一點,並堅持與語言無關的數據交換格式,如JSON或XML 。

+0

對於'json_encode()'+1。不知道那個。 – JakeParis 2011-01-05 03:13:52

+0

我需要一個特殊的插件來調用JSON嗎?現在我正在使用jQuery 1.4.4 – Sin 2011-01-05 03:16:53

+0

@Sin [JSON是Javascript對象表示法](http://en.wikipedia.org/wiki/Json),它是適用於簡單數據交換格式的有效Javascript。不,你不需要任何特別的東西來使用它。 – deceze 2011-01-05 03:19:02

1

如果你100%確定你的包含中沒有任何單引號,那麼你應該沒有問題。

如果您想將其可視化,請將所有生成的代碼從包含的php文件中複製並粘貼到append()的主頁面中。看看它看起來如何。這會給你一個瀏覽器最終結果的好主意。

+0

嗯,你知道,我從來沒有想過這件事。這是否適用於包含的PHP文件的內容? – Sin 2011-01-05 03:07:22

+0

是的!看到我上面的編輯可視化最終結果。 – JakeParis 2011-01-05 03:08:40

+0

哦,那麼,這是一個合法的標記? jquery裏面的''?只要確保我沒有留下任何東西 – Sin 2011-01-05 03:09:44