2013-07-30 38 views
-1

好的我在這裏遇到問題。我想獲得一個JS變量在SQL查詢中使用。現在我知道這是不可能的,所以我使用jquery傳遞變量,並使用get方法將它分配給php中的變量。但PHP的alwways在JS之前加載,所以SQL查詢不會更新。這裏是有代碼:在mysql中使用js變量

var monthS = calenderMonths[monthNow]; 
$.get('load2.php', {location:monthS}); 

這是該公司在HTML

被裝載的函數中的我的JS文件這是我的PHP:

$monthS = $_GET['location']; 

echo "alert($monthS);"; 
// Connect to MySQL 
if (!($database = mysql_connect("localhost", 
    "root", "")))      
    die("Could not connect to database </body></html>"); 

// open Events database 
if (!mysql_select_db("Events", $database)) 
die("Could not open Events database </body></html>"); 

$result = mysql_query("SELECT * FROM posted_events WHERE Month_ = '$monthS' ") 
    or die ('Error updating database because: '.mysql_error()); 

我提醒$個月,看它是否通過但最初警報最終會變空,但在點擊「確定」(如3秒)後,另一個警報框會顯示變量。所以我相信PHP在變量傳遞之前加載。無論如何,我可以解決這個問題嗎?謝謝

+0

PHP在該變量到達之前未加載,在發送請求之前,甚至不會調用PHP本身。 – tymeJV

+0

這看起來像AJAX – 2013-07-30 20:25:19

回答

2

在繼續執行腳本的其餘部分(如果它依賴於您的響應)之前,您應該等待.get()完成。

$.get('load2.php', {location:monthS}) 
    .done(function(data) { 
    alert(data); 
    //rest of your code 
}); 
+0

工作,所以這應該是在我的PHP而不是JS? – Kay

+1

沒有你的Javascript中的Ajax調用,你基本上不了解你的$ .get('load2.php',{location:monthS});代碼正確,$ .get是一個簡短的Ajax調用,它是異步運行的,所以你的腳本會在它收到響應之前繼續運行。在你的情況下,你可以把需要從你的請求中得到的變量的代碼放到.done()函數中,這樣它只會在你從php頁面(包含你的變量)收到響應後才執行。在這裏閱讀更多:http://api.jquery.com/jQuery.get/ – JohnnyFaldo

+0

哦,我想我現在明白了。但是腳本中沒有其他代碼,我想要的所有內容都是在php中完成的。但變量仍然沒有通過 – Kay