2012-03-06 114 views
0

我的頁面混合使用Javascript和php。 Javascript被用來從幾個選擇中選擇一個字符串。然後一些php代碼需要對這個字符串做些什麼。如何在同一頁上將Javascript字符串傳遞給php

我已經看到一些似乎在討論在不同網頁上傳遞變量的例子。我只是在一頁上完成這一切,我試圖傳遞的是一個字符串。

我想另一種解決方案是使用PHP來選擇字符串,如果這是可能的?

+0

所有你想做的事就是從pageA傳遞一個字符串到pageB? 您應該嘗試將該字符串作爲「URL的一部分」或「POST請求」發送,或者在最糟糕的情況下使用「cookies」。 – 2012-03-06 21:00:15

+1

如果你解釋字符串是什麼以及你想用它做什麼,你可能會得到更好的答案。 JS和PHP是否在同一頁上並不重要。首先執行PHP,然後將結果(文本)發送到瀏覽器,並將其評估爲JavaScript和HTML。 – 2012-03-06 21:02:15

+0

將一個JavaScript變量傳遞給PHP的唯一方法是向PHP腳本發送一個POST或GET方法,但這不能在沒有重新加載頁面的情況下完成。如果你這樣做的話,你可能只需要使用PHP從頁面上的表單元素獲取輸入''<?php $ example = $ _ POST ['example_form_name'];''。否則,您可能需要更詳細地描述腳本。 – 2012-03-06 21:02:36

回答

4

當瀏覽器呈現頁面時,PHP已完成作業並關閉連接。

要傳遞一些在客戶端使用js確定的值,您需要一個新的請求。這意味着你需要使用Ajax。

+0

下面的回答者展示瞭如何在沒有Ajax的情況下做到這一點? – 2012-03-06 21:07:57

+0

當他說「你需要通過JavaScript向服務器發送請求」時,他的意思是AJAX。 – bfavaretto 2012-03-06 21:11:17

1

您需要通過JavaScript向服務器發送請求,因爲PHP是服務器端語言。您可以使用POST或GET變量將字符串發送到同一頁面,然後添加PHP代碼以在頁面加載時檢查該變量。

的PHP會是這樣的:

if(isset($_POST['string'])) { 
// do something with the string 
} 
+0

此方法不使用Ajax? – 2012-03-06 21:27:23

+0

你可以這樣做,一個頁面重新加載或通過AJAX。儘管如果你使用AJAX來做,你可能想要分開處理字符串的PHP代碼,只是爲了清楚起見。 – 2012-03-07 15:35:14

2

PHP解析數據的服務器端(前的頁面加載),而JavaScript的上頁面加載處理一切瀏覽器端(後)。你不可錯過的JavaScript到PHP的功能,除非你使用AJAX來發送PHP腳本變量:

的JavaScript

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> 

<script type="text/javascript"> 
    // Find whatever string you need 
    var something = $('.input').val(); 

    $(function() { 
     $.ajax({ 
     url: '/path/to/php_script.php', 
     type: 'POST', 
     data: 'variable='+something, 
     success: function(data) { 
      $('.display_div').html(data); 
     } 
     }); 
    }); 

</script> 

PHP

$something = $_POST['variable']; 

// Do something with it 
echo strlen($something); 
+0

什麼是php_script.php?這是所有代碼所在頁面的名稱嗎? – 2012-03-06 21:06:09

+1

php_script.php只是我編寫的一個示例PHP文件。你需要把所有修改你的字符串的PHP放到這個單獨的文件中 – hohner 2012-03-06 21:07:21

+0

那麼在你的例子中,那個PHP代碼會進入其他文件? – 2012-03-06 21:12:34

相關問題