簡體   English   中英

在PHP中執行javascript

[英]Executing javascript within PHP

我相信可以在PHP中執行一個java腳本函數,但是它會保留在服務器端而不是客戶端嗎? 我可以在PHP中調用.js函數,傳遞一些args,並讓它返回到調用它的PHP嗎?

我想要使​​用的腳本返回XML,我希望使用PHP獲取用戶輸入,將它們傳遞給駐留在服務器上的 .js函數,然后獲取返回的xml並在PHP部分中將其解析回來。

我問,因為我看到人們評論,因為.js是客戶端而PHP是服務器端,他們不相處。 我希望通過在PHP中執行.js函數,我可以將.js調用欺騙來自本地機器(服務器)。

感謝您的任何信息!

你不能從PHP本身調用JavaScript。 PHP不是JavaScript引擎。

但是,有一個PECL擴展用於與V8連接:

您可以與(服務器端)JavaScript引擎連接。 看看node.js

如果您找到了可以調用的服務器端Javascript解釋器,您可以。 我沒有使用過PHPJS(http://phpjs.berlios.de/),但它可能有效。

聽起來你更好的選擇是替換js代碼,因為你所做的只是聽起來不錯。

我認為bpeterson釘了它。 但是如果你對AJAX感到不舒服,或者只是需要更多細節。

首先 - 對按鈕(表單提交或其他方式)執行操作。 行動= “JavaScript的:yourJsFunc()”。 這個元素很可能通過PHP上的回聲呈現,或者只是靜態編寫。

下一步 - 獲取所需的參數。 我建議使用jQuery或DOM方法,即。 $('#blah')或document.getElementById('blah')。val();

然后 - 設置隱藏的輸入以存儲您的響應,強制提交或執行ajax請求。 你有PHP的價值觀!

function yourJsFunc()  
{  
   var arg1 = $('#arg1').val //or equivalent DOM method  
   var arg2...  
   //serialize these if necessary  
   var yourXML = outsideJSFunction(arg1, arg2, etc);

   $('#invisibleDiv').html('<form id="yourForm" method="POST"><input type="hidden" name="x" val="'+yourXML+'" /></form>'); 
   $('#yourForm').submit(); 
        //ALTERNATIVELY $.get("other.php", {myXml : yourXml}, function() {//whatever}); 
}  

這真的不像你看起來那么困難。

  1. 頁面最初使用PHP / HTML呈現。
  2. 用戶在表單字段中輸入信息。
  3. 使用Jquery Serialize函數將數據轉換為可以傳遞的格式(javascript var)。
  4. 將序列化數據傳遞給您的Javascript以獲得所需的XML
  5. 通過AJAX將返回XML結果提交給PHP。
  6. PHP將從Jquery提交的POST作為POST提交並實現其魔力。

僅供參考,通過PHP稱為XAJAX的 AJAX解決方案相對鮮為人知。 在這種情況下,它可能不會幫助你太多,但它允許你在PHP函數上進行AJAX調用。 雖然PHP沒有javascript解釋器,但XAJAX和Jquery的Ajax是前端代碼與服務器端功能交互的絕佳方式。

停止 PHP 執行<!--? within javascript</div--><div id="text_translate"><p> 我正在嘗試實現 TinyMCE,它在我的測試平台上運行良好,但在生產服務器上,PHP 正在嘗試執行一些'&lt;?' tiny_mce.js文件中的標簽。</p><p> 我有一個名為html_editor.php的文件,它被引入到需要使用include_once的每個表單中。 在html_editor內,我有以下內容:</p><pre> &lt;script type="text/javascript" src="/Public/TinyMCE/tiny_mce.js"&gt;&lt;/script&gt;</pre><p> 隨后是 Tiny MCE 初始化,但它在該行上因unexpected T_CONSTANT_ENCAPSED_STRING 。 我用tiny_mce_src.js替換了腳本文件,以找到導致問題的確切代碼,它是:</p><pre> html.push('&lt;?', name, ' ', text, '?&gt;');</pre><p> 我在tiny_mce_src.js中用雙引號交換了單引號,這確實解決了問題,但在縮小的代碼中,它們已經是雙引號了。</p><p> 這顯然是我的測試服務器和生產服務器之間與 PHP 的配置差異,但我無法追蹤是什么。 我正在使用 PHP 5.3 進行測試,並且服務器正在運行 5.2。</p></div>

[英]Stop PHP executing <? within javascript

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 停止 PHP 執行<!--? within javascript</div--><div id="text_translate"><p> 我正在嘗試實現 TinyMCE,它在我的測試平台上運行良好,但在生產服務器上,PHP 正在嘗試執行一些'&lt;?' tiny_mce.js文件中的標簽。</p><p> 我有一個名為html_editor.php的文件,它被引入到需要使用include_once的每個表單中。 在html_editor內,我有以下內容:</p><pre> &lt;script type="text/javascript" src="/Public/TinyMCE/tiny_mce.js"&gt;&lt;/script&gt;</pre><p> 隨后是 Tiny MCE 初始化,但它在該行上因unexpected T_CONSTANT_ENCAPSED_STRING 。 我用tiny_mce_src.js替換了腳本文件,以找到導致問題的確切代碼,它是:</p><pre> html.push('&lt;?', name, ' ', text, '?&gt;');</pre><p> 我在tiny_mce_src.js中用雙引號交換了單引號,這確實解決了問題,但在縮小的代碼中,它們已經是雙引號了。</p><p> 這顯然是我的測試服務器和生產服務器之間與 PHP 的配置差異,但我無法追蹤是什么。 我正在使用 PHP 5.3 進行測試,並且服務器正在運行 5.2。</p></div> 從 php 文件中執行 javascript 單擊按鈕時在 javascript 中執行 php 代碼 PHP中生成的Javascript未執行 在JavaScript中執行PHP腳本? Javascript未用PHP執行 JavaScript執行PHP代碼 PHP 生成 javascript 未執行 從php中執行python 在PHP中執行shell腳本
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM