2011-05-23 170 views
2

我指的是這樣一個問題: Javascript value to PHP with Jquery傳遞JavaScript變量PHP

我在名爲a.php只會文件嘗試下面的代碼:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
<script type="text/javascript"> 
var ms = 9000; 
function test() 
{ 
    $.ajax({ url: "a.php", 
     data: {"test":ms}, 
     type: 'get', 
     success: function(output) { 
         $('#testing').html(output); 
        } 
    }); 
} 
test(); 
</script> 
<?php 
$ms = $_GET["test"]; 
echo "I am getting below value:"; 
echo $ms; 
?> 

然後我點瀏覽器http://localhost/learn/a.php但得到錯誤信息&在 C測試::(!)

注意:按預期不顯示的$ MS值未定義指數\ WAMP \ WWW \學習\ a.php on line 17

$ ms = $ _GET [「test」]; < - 行17 在a.php只會

我想下面的另一個簡單的代碼(b.php):

<script src="js/jquery.min.js"></script> 
<script type="text/javascript"> 
var ms = 3000; 
$.get("http://localhost/learn/b.php", { "test": ms }); 
</script> 
<?php 
$ms = $_GET["test"]; 
echo $ms; 
?> 

然後我點瀏覽器http://localhost/learn/b.php但得到了類似的錯誤消息&沒有價值的$毫秒顯示:(!)

注意:未定義指數:測試在 C:\ WAMP \ WWW \學習上線7 \ b.php下面是一行代碼7 $ ms = $ _GET [「test」];

請指教。謝謝。

回答

3

OK,看着這個代碼:

<script src="js/jquery.min.js"></script> 
<script type="text/javascript"> 
var ms = 3000; 
$.get("http://localhost/learn/b.php", { "test": ms }); 
</script> 
<?php 
$ms = $_GET["test"]; 
echo $ms; 
?> 

我假定這是全部在一個文件中。您有兩種不同語言的代碼,可以在不同的地方進行解釋。首先,你有頂部的Javascript。這不是由您的服務器解釋。它就像HTML一樣返回到瀏覽器。

後來,你有一塊PHP。我們仍在服務器上,尚未向瀏覽器發送任何內容。您尋找$_GET['test']值。您的網址爲http://localhost/learn/b.php:顯然,該網址中沒有GET值,因此是錯誤。

當您的代碼發送到瀏覽器時,瀏覽器會看到$.get行並執行AJAX請求。這是另一個 HTTP請求。它不會修改原始請求,因此它不會緩解您在上面收到的錯誤。有了這個請求,你的瀏覽器會發送http://localhost/learn/b.php?test=3000到服務器,並且不會有錯誤。但是,由於您對響應沒有做任何處理,因此您沒有看到第二個請求的影響。

+0

感謝您的優秀解釋。但除了GET,POST之外,還有其他方法可以將js值傳遞給PHP嗎?這樣詢問是因爲我試圖通過API「http://example.com/jsapi」返回一些數據。目前,數據顯示在網站上使用

在html和document.getElementById(「panel」)在js中。我想將「面板」內的文本插入到PHP變量中,然後插入到MySQL中。任何建議或參考相關文檔。 – learnJQueryUI 2011-05-23 10:13:35

+3

@Steve號PHP是服務器端,JS是客戶端。這兩種通信方式是HTTP,即GET/POST。 – lonesomeday 2011-05-23 10:15:16

+0

你說過「但是,因爲你沒有做任何響應,你沒有看到第二個請求的影響。」你能提供代碼來查看第二個請求的效果嗎? – learnJQueryUI 2011-05-23 15:49:17

2

也許這個網址,你需要精確的GET參數 「測試」,在URL

http://localhost/learn/a.php?test=hello

+0

哇,超快,謝謝。這是否意味着必須使用GET或POST來將js變量傳遞給php或其他方式? – learnJQueryUI 2011-05-23 10:02:36

+1

我想是的,在你的情況下,我想你錯過了一個窗體來調用測試JavaScript函數,然後它會自動調用a.php腳本的GET參數已經設置 – krifur 2011-05-23 10:09:54

1

當您使用XHR發出請求時,您不會簡單地訪問帶有新請求的頁面,並且該值仍然存在(HTTP爲無狀態)。

你需要在jQuery的回調中做些事情。

+0

聽起來不錯!你能否提供額外的代碼,以便a.php能夠按預期工作。 – learnJQueryUI 2011-05-23 15:55:06

1

它看起來像你混淆你應該把你的Javascript和PHP的地方。你的PHP文件應該只有接收和使用Javascript變量的邏輯,而不是任何Javascript本身。所以基本上你需要分解這個邏輯。

在HTML文件中:

 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
<script> 
$(function() { 
    var ms = 3000; 

    $.ajax({ 
     url: 'a.php', 
     data: { test: ms }, 
     success: function(response) { 
      $('#testing').html(response); 
     } 
    }); 
}); 
</script> 

在你的PHP文件(a.php只會);

 
<?php 
$ms = $_GET['ms']; 
echo 'I am getting the value: ' . $ms; 
?> 
+0

你能詳細說一下嗎?如何命名html文件或將html代碼放入a.php?以及如何從瀏覽器調用?使用http://../a.php給出錯誤。如果http://../a.php?test = 100,則返回100,而不是預期的3000。 – learnJQueryUI 2011-05-23 15:52:59