2011-07-04 111 views
1

我瞭解PHP ...分配JavaScript變量與AJAX

  • PHP是服務器端和JavaScript作爲客戶端之間的差距。
  • AJAX可以修補這個問題。
  • XMLHttpRequest對象很重要。

但是,我仍然無法弄清楚如何在兩種語言之間傳遞變量。

任何援助將不勝感激!

編輯:感謝您的答覆到目前爲止,我應該澄清,我想這樣做,而無需加載新頁面。

回答

1

您需要發送包含查詢字符串或POST正文中的變量值的AJAX請求。

位於URL另一端的PHP腳本可以從查詢字符串或POST主體讀取值。

+0

感謝您的回覆。這將是什麼樣的請求,並且它需要一個外部PHP文件? – Sebastian

+0

它可以是GET或POST。如果它不是冪等的,它應該是POST。它可以是任何你想要的PHP文件; PHP文件將收到一個單獨的請求。 – SLaks

0

你可以在JS中使用JSON並用php解碼,但正如上面的帖子所述,它涉及到ajax。

+0

這聽起來不錯,因爲我已經在做與頁面上其他數據類似的事情。如何獲得我感興趣的兩個變量以格式化爲JSON?之後,我可能會得到它的工作。 – Sebastian

0

UPDATE:教程發現在link

你應該給你想要實現的一個更詳細的例子。但是,如果我理解正確,您想在您的PHP代碼中使用JavaScript代碼中的值?

您應該嘗試使用POST或GET參數將值傳遞給PHP。爲了使PHP能夠做任何事情,你將不得不加載一個新頁面。

假設您有list.php正在提供職位列表。你想「喜歡」一篇文章。您的JavaScript位於此頁面上。當你點擊「like」時,一個AJAX POST被髮送到like.php,POST參數id = 123。

在like.php中,您從請求中獲得值(使用$_POST['id']或更合適的東西),做你的魔法(保存到db)並回顯一些結果,例如json_encode(array('success' => true))

調用like.php的JavaScript代碼可以使用它的回調來檢查「like」是否成功並顯示反饋。 like.php可以是任何頁面,如果您願意,可以使用list.php。爲了清晰起見,我使用了like.php

如果這不是你想要的,請提供更多信息。

+0

你說得對,我想在我的PHP中使用Javascript值。我的問題在於,即使閱讀了AJAX POST函數的文檔之後,我也不明白所有參數,因此它不起作用。 – Sebastian

+1

閱讀jQuery AJAX([link](http://api.jquery.com/jQuery.post/))。您的javascript代碼將如下所示: '$ .post(「like.php」,{id:123}, function(data){ //檢查數據是否一切正常,將一些反饋附加到DOM } );' 和你的like.php類似: '<? $ id = $ _POST ['id']; echo json_encode(array('success'=> true)); ?>' 有很多很好的教程,例如: [link](http://php4every1.com/tutorials/jquery-ajax-tutorial/) – johnhaggkvist

+0

我想通過兩個JS變量, lat和lng。我的代碼看起來像這樣到目前爲止,但PHP會拋出一個錯誤,該變量未定義: '$ .post(「index.php」,{lat:lat,lng:lng},function(data){//檢查數據如果一切順利,附加一些反饋到DOM});''和'$ lat = $ _POST ['lat']; echo json_encode(array('success'=> true));' – Sebastian

0

如果您還沒有看過jQuery框架的JavaScript腳本,那就做吧。

如果你有一個叫JS city變量,你可以通過它使用

var city = "London"; 
$.get("file.php", {location:city}); 

這是一個HTTP GET請求傳遞給file.php

在PHP(文件。PHP),然後通過使用它來抓取它

$city = $_GET['location']; 

echo $city; //London 
+0

這看起來很有希望,但標記了PHP錯誤: **注意:未定義索引:位置** 任何想法? – Sebastian

+0

@塞巴斯蒂安很難說,這意味着變量沒有被髮送。首先確保函數運行,然後直接在函數中嘗試像location =「London」一樣,以確保該值已設置。 – joakimdahlstrom