如果我使用Jquery .load(file.php)加載PHP頁面,那麼包含的文件是否可以使用在頁面上定義的調用load()的php變量?Jquery load()和PHP變量
回答
你誤解是如何工作的。
- PHP運行之前的任何瀏覽器響應頒發給客戶端,所有的代碼運行服務器上。所有PHP代碼運行後,PHP文件中聲明的變量將被銷燬;他們「消失」。
- JavaScript運行後瀏覽器響應已經開始,所有代碼都在客戶端上運行。通過「加載」PHP文件的輸出結果,您將無法訪問PHP的變量,只能訪問輸出。
如果你想從PHP轉移某些變量的JavaScript,你可以放棄一些輸出到JSON在你的PHP腳本,像這樣:
<?PHP
header("Content-Type: application/json");
$myVariable = "hello world";
echo json_encode(array(array("myVariable" => $myVariable)));
/* Output looks like this:
[
{
"myVariable": "hello world"
}
]
*/
?>
你的JavaScript/JSON應該是這個樣子:
$.getJSON("test.php", function(result) {
console.log(result[0].myVariable);
});
這有道理嗎?
我喜歡你清楚的解釋*爲什麼*它不會起作用,這是wny我upvoted的答案。但是,使用簡單的非轉義'echo'語句生成JSON的提示非常可怕;這就是爲什麼[json_encode()](http://php.net/json_encode)存在。 –
對,我的道歉。我只是試圖讓它容易理解。自從我使用PHP以來已經有一段時間了,而且我過去並不需要從PHP序列化JSON,所以我的不好。 –
編輯我的答案,使用'json_encode'。 –
變量範圍PHP
腳本加載的JavaScript
與載入PHP
腳本的頁面不同,所以答案是否定的。
但您可以定義全局變量或使用超級全局變量(如$_GET
,$_POST
等)來獲取所需內容。
您可以使用PHP動態地定義Javascript在頁面中傳遞的變量。 –
@WatermarkStudios由Javascript傳遞的變量與OP所要求的不同:'包含的文件是否可以使用在調用load()'的頁面上定義的php變量。 – fardjad
您可以完全按照TK Kocheran描述的方式使用它們(儘管強烈建議使用json_encode())。你說得對,javascript不能直接訪問PHP變量,因爲在RESPONSE循環中加載的順序是一樣的,但添加一行PHP來定義一個與PHP變量具有相同值的Javascript變量是沒有聽說過的,也沒有這是不好的做法,除非PHP變量的值是敏感的。如果敏感數據是一個問題,使用會話變量可能是最好的。 –
不行,你必須通過你想用你的file.php
變量:
$('#yourdiv').load('file.php?var1=xyz&var2=xyz&var3=xyz');
然後你就可以讓那些在你的file.php:
$var1 = $_GET['var1'];
$var2 = $_GET['var2'];
$var3 = $_GET['var3'];
如果有很多變量然後使用POST方法:
$('#yourdiv').load('file.php', {var1:x, var2:y, var3:z})
然後獲取file.php中的變量:
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];
This works too ...我只是用file.php替換''file.php?var1 = xyz&var2 = xyz&var3 = xyz'' var1 = {$ xyz}&var2 = {$ xyz}&var3 = {$ xyz}''如果您使用從當前PHP文件填充的變量。同樣,整條線將不得不從PHP標籤中迴應。 –
我很欣賞這種方法,因爲它使用了原生的jQuery'load'函數。 – RCNeil
您將不得不通過.load函數將這些變量傳遞給加載的PHP文件。
例子:
$("#objectID").load("test.php", { 'choices[]': ["{$choice1}", "{$choice2}"] });
在當前的PHP文件中定義的變量將成爲加載新的PHP文件中的Javascript的一部分。
當然這條線將不得不從PHP標籤中迴應出來。 –
是,使用數據參數,請參閱http://api.jquery.com/load/:
$('#someelement').load(
"test.php",
{
'key1': '<?php echo $value1; ?>',
'key2': '<?php echo $value2; ?>'
}
);
參數被髮布到文件test.php
並作爲訪問:
$_POST['key1']
$_POST['key2']
這是一個乾淨的解決方案,但請記住,如果您想使用當前PHP文件中定義的變量,則必須使用PHP變量中回顯的PHP變量替換值。 –
JQuery加載函數的第二個參數(params)應該是對象或回調函數,但也可以是空字符串。根據不同的情況,負載會發送帖子或獲取請求。
我的想法是在get和post之間自動切換(例如,如果設置了cookie),因爲get更快並且緩存可用,並且post更加節省。
其糟糕的編寫,包括回調函數裏面的內容加載函數兩次比寫類似的東西:
//get
var url="cache_dir/my_bag.html";
var params="";
if(document.cookie){
//post
url="post.php";
params="{my:bag}";
}
$(selector).load(url,params,function(){
...
});
- 1. jQuery的.load POST變量
- 2. jQuery .load,變量爲url
- 3. jQuery .load發送變量
- 4. jquery .load()與多個變量
- 5. jquery load()片段url變量
- 6. PHP jQuery:傳遞一個PHP變量FROM(不)$ .load()
- 7. PHP會話變量和jQuery
- 8. jquery load()使用變量而不是url
- 9. 傳遞變量.load(HTML)jQuery中
- 10. jquery .load返回的變量處理
- 11. 將變量傳遞給jQuery .load函數
- 12. 將jQuery .load()存儲到變量
- 13. jQuery中的JavaScript變量.load()參數
- 14. 如何通過javascript變量jQuery的.load
- 15. 將變量傳遞給PHP使用jQuery .load
- 16. 如何將PHP變量用於jQuery .load()腳本?
- 17. PHP變量jquery變量
- 18. 使用Jquery .load()函數獲取變量和頁面片段
- 19. 傳遞序列化數據和變量與jQuery .load()
- 20. jQuery與.load()和PHP表單的問題
- 21. jQuery .load和PHP會話開始
- 22. jQuery的PHP變量
- 23. Jquery Alert PHP變量
- 24. JQuery + Wordpress PHP變量
- 25. jQuery變量到PHP
- 26. .scrollTop和.load jQuery的
- 27. jQuery事件和.load()
- 28. jQuery UI,.load和dialog
- 29. .load()和.fadeIn jQuery中
- 30. 的JQuery load()和.prepend()
喜@ user1091856 - 歡迎SO。如果它適用於你(不僅僅是這個問題,而且還包括你以前的任何四個問題),接受一個答案是一個好習慣。乾杯! – themerlinproject