2017-01-26 73 views
1

我正在一個項目上,我想用jquery發送一個變量到php。這是一個名爲test2.php的文件,我一直用它來測試代碼,任何人都可以告訴我我做錯了什麼,因爲它應該在您點擊按鈕時打印出變量,但沒有任何事情發生。jquery變量與ajax

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    var something="hello"; 
    $("button").click(function(){ 
     $.ajax({ url: 'test2.php',type: "GET", data: { q : something }}); 
    }); 
}); 
</script> 
</head> 
<body> 
<button>Get External Content</button> 
</body> 
</html> 
<?php 
    if(isset($_GET['q'])) 
{ 

$q = $_GET["q"]; 
echo $q; 
} 
?> 
+0

AJAX在後臺執行目標URL中的代碼。它不會顯示或替換您當前所在頁面的內容。如果您想查看AJAX請求本身是否成功,請轉到瀏覽器的「控制檯」(通過最多按下「F12」)並查看「網絡」選項卡。 –

+0

你的JavaScript代碼沒有對AJAX響應做任何事情,只是忽略它。在jQuery文檔和'$ .ajax()'的例子中,看看「成功」和「錯誤」回調。 – David

回答

0

你的代碼看起來大致正確的,但你要記住,一個AJAX調用發送數據「異步」,當你點擊這個數據被髮送到「test2.php的一個單獨的實例的按鈕,這意味着「用於處理。它不會使用這個新數據重新加載當前頁面。

您在瀏覽器中查看的「test2.php」代碼只在第一次啓動頁面時在服務器端運行一次,並且當時'$ _GET'變量中沒有'q'。 AJAX請求將數據發送到同一個「test2.php」文件的單獨實例,它的接收到一些數據,但它沒有使用該信息將任何內容加載到瀏覽器中。

根據您試圖達到的目標,有許多不同的解決方案。你可以使用你收到了什麼,從你的AJAX請求更新網頁上像這樣的信息:

$.ajax({ 
    url: "test2.php", 
    type: "GET", 
    data: { q: something}, 
    success: function (response) { 
     // do something with 'response' here 
    } 
}); 

或者你可以有按鈕,而不是一個簡單的<a>標記,與存儲在「信息重新載入當前頁面中瀏覽器$ _GET」,像這樣:

<a href="test2.php?q=something">Button</a> 

那麼當你的PHP代碼查找‘q’它實際上找到它在$ _GET變量,因爲你重新加載頁面。

+0

'「,然後永遠不會退回給你」 - 這有點誤導。結果*被返回到他的JavaScript代碼,該代碼完全忽略它們。 – David

+0

@大衛是的,這是正確的,我會相應地更新我的答案,謝謝。 –