我想將一個javascript字符串傳遞給php ...在腳本中,代碼後面的WHICH是正確的。將一個Javascript字符串傳遞給PHP
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
這是行不通的。 我該怎麼辦?
我想將一個javascript字符串傳遞給php ...在腳本中,代碼後面的WHICH是正確的。將一個Javascript字符串傳遞給PHP
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
這是行不通的。 我該怎麼辦?
當有人訪問一個網站,這通常是發生了什麼:
因此,PHP和JavaScript基本上處於不同的過程。只有服務器處理PHP,並且只有客戶端處理JavaScript。
「給」的字符串,以PHP,你必須使PHP頁面的請求,發送該字符串作爲GET變量:
http://www.yourdomain.com/some_php_page.php?myvar=mytext
有幾種方式同做到這一點JavaScript的。
如果你只關心使PHP頁面上的要求,而且你不必擔心收到任何信息反饋,你可以創建一個圖像,並使用URL作爲源:
var fakeImg = new Image();
fakeImg.src = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext';
即使您要求圖片,服務器也不知道,並且會通過調用PHP評估它來處理您的請求等。
您可以進行實際的AJAX請求。通過創建一個XMLHttpRequest對象開始:
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
有在IE中的一些問題與AJAX請求緩存響應,所以使獨特的網址:
var url = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext&unique=whatever';
告訴你XHR,你想讓它去的,你希望如何到達:
xhr.open('GET', url, true);
// The "true" parameter tells it that we want this to be asynchronous
設置,將檢查,當接收到響應的方法:
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status < 400) {
success(xhr.responseText);
}
};
最後,發送請求:
xhr.send(null);
// We set "null" because some browsers are pissy
的一些注意事項要牢記:
success
功能,來處理字符串,你的PHP頁面會返回。xhr.responseXML
,但這對我來說通常只是一個麻煩。onreadystatechange
我有辦法將(我相信)介紹內存泄漏在IE瀏覽器的某些版本+1正確使用單詞「Egad」 – Ender 2011-05-24 20:24:39
PHP是執行服務器端,而JavaScript是客戶端,所以這意味着PHP已經在您發送您的JavaScript代碼時執行。
您可能想要考慮AJAX。
好吧...我想不用ajax來做...但是你會如何用ajax做到這一點?代碼示例? – 2011-05-24 20:13:11
@ mr.bio無法在PHP中使用JavaScript值(在同一頁上),因爲PHP已經執行了**。你需要發射另一個HTTP請求。 – Nick 2011-05-24 20:16:04
您應該清楚客戶端和服務器端代碼之間的區別。您在php代碼中引入的變量之前未分配,因爲該變量是在客戶端設置的。所以你的代碼示例本質上是錯誤的。如果您希望客戶端(javascript)中存在的值在服務器(php)中可用,則需要使用javascript的xmlhttprequest對象(也稱爲ajax)進行操作。
你可以通過其他方式,雖然...打印在JavaScript中的PHP值。這是因爲腳本不是由服務器端創建的,而是在瀏覽器正在處理之前發送給客戶端。
不知道你試圖達到什麼,但也許這有所幫助。
你的例子是有點混亂:
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
因爲如果我這樣做:
<script type="text/javascript">
<?php $myvar = "mytext"; ?>
var myvar = "<?php echo $myvar; ?>" ;
</script>
然後它設置的JavaScript值的PHP值爲$myvar
,所以它們都保持不變。如果你想要做其他事情,你需要擴展你的例子。
您顯然缺乏對PHP和JavaScript,服務器端和客戶端之間差異的理解。我建議你在編寫任何其他代碼之前仔細閱讀。 – Nick 2011-05-24 20:13:30