2012-11-22 24 views
1

我做了一個bitly的縮小器,我目前有一個Soundcloud Javascript API,可以輸出歌曲的url鏈接。我正試圖用我的收縮器縮小它。收縮器作品使用此:在Javascript中使用PHP?收縮URL

<?php echo $bitly->shorten('http://google.com'); ?> //Equals google.com in short url format 

的JavaScript代碼,我想要實現它是這樣的:生病繼續前進,給你什麼,我想已經這樣做,沒有工作。

之前我編輯:

container.find('span.player-actions').html(
       '<a href="' + track.user.permalink_url + '" target="_blank">Soundcloud</a> | <a href="' + track.permalink_url + '/download" target="_blank">Download</a>' 
     ); 

後我想:

container.find('span.player-actions').html(
       '<a href="' + <?php echo $bitly->shorten('track.user.permalink_url'); ?> + '" target="_blank">Soundcloud</a> | <a href="' + track.permalink_url + '/download" target="_blank">Download</a>' 
     ); 

任何建議,我接受任何東西。並且會喜歡做這個工作!

+1

JavaScript在客戶端執行。 PHP代碼在服務器上運行。你**不能**把PHP放到你的JS中。 –

+0

[php in javascript?]可能的副本?(http://stackoverflow.com/questions/1849812/php-in-javascript) –

回答

1

對於通過javascript生成的字符串,您無法調用PHP,因爲PHP是服務器端,並且在客戶端的JavaScript之前執行。

如果你想縮短這個字符串,你將不得不對ajax調用一個php頁面,它將返回縮小的url。

3

這已經被解釋過了,但如果你對這個概念還不熟悉,那麼有一個簡單的解釋。

<?php您的代碼中的標籤在服務器上處理之前您的頁面被髮送到用戶的瀏覽器。實際上,瀏覽器永遠不會收到這些標籤 - 它們會被服務器上的PHP輸出替換,然後將生成的頁面發送給用戶。

由於某些錯誤導致PHP代碼在用戶的瀏覽器中產生,但它的行爲與其他任何非標準代碼一樣 - <?php?>之間的內容對訪問者來說是不可見的。另一方面,JavaScript在用戶瀏覽器中運行(在我們的例子中)PHP已經輸出的內容。當您使用JavaScript更改頁面時,它不會發送回服務器 - 實際上,服務器完全不知道這一點,因此它無法執行您通過JavaScript輸出的PHP代碼。

爲了達到類似的結果,你需要從你的JavaScript代碼發送一個AJAX請求。它基本上是另一個由你的JavaScript發起的「頁面請求」,但是在後臺發生的PHP輸出不會取代你當前的頁面,而是到達你的JavaScript代碼。這樣你的JavaScript輸出PHP 輸出而不是PHP 代碼,這就是爲什麼它是可能的。

+0

謝謝尤里!那是我正在尋找的解釋!現貨 –

+0

不客氣。如果現在已經清楚了,您能否將您收到的針對此問題的答案標記爲已接受?這就是這個網站的工作方式。 – Yuriy