2009-12-28 108 views
4

我該如何着手將JavaScript代碼中的數據傳遞給PHP並返回。 現在,我做的這是一個關於倒過來:
PHP來的JavaScript: 我會簡單地使用內聯回聲發送數據:如何將數據從JavaScript發送到PHP,反之亦然?

<script type="text/javascript"> 
    var data = <? echo $target_variable ?> 
</script> 

OR

<script type="text/javascript"> 
    var data = <?= $target_variable ?> 
</script> 

JavaScript以PHP : 我會在JavaScript中創建一個表單元素,用於將數據提供給php文件:

<script type="text/javascript"> 
    var data = targetData; 
    document.write(" 
     <form method=\"post\"> 
      <input type=\"hidden\" value=\""+target_value+\""></input> 
     </form> 
    "); 
</script> 
</script> 

有沒有更好的方法來做到這一點?最佳實踐之類的事情。

+0

在你的例子中,即使使用javascript也沒有意義。你可以將表單設爲html,並用php – Galen 2009-12-28 07:03:30

+0

回顯traget_variable這僅僅是一個例子。其背後的想法是,也許我已經創建了這個複雜的JavaScript函數,它神奇地生成數據,我需要將這些數據發送到PHP腳本以保存到數據庫中......或者類似的東西。 – chustar 2009-12-28 07:10:41

回答

5

如果您希望通過表單提交此數據,則無需使用Javascript創建表單。只需使用HTML創建一個不可見的表單,使用Javascript填充隱藏的字段,並在您準備好時自動提交。

<form method="post" action="process.php"> 
    <input type="hidden" name="data" id="data" /> 
    </form> 

    document.getElementById("data").value = "foo"; 

如果你想以ajax風格的方式發送這個,我會建議實現jQuery,這使得這非常簡單。注意前面的情況下轉化爲一個jQuery解決方案:

$.post("process.php", {data:"foo"}, function(results){ 
    // the output of the response is now handled via a variable call 'results' 
    alert(results); 
}); 
+0

你將如何使用JavaScript提交表單?它是這樣的: document.forms.form_name.submit(); ? – chustar 2009-12-28 07:13:36

+0

@chustar你可以這樣做,但記住整個頁面會刷新這可能是好的,但它可能會更好地使用Ajax在後臺進行調用。 – 2009-12-28 07:24:26

0

好吧,如果你想異步交互,可以使用XMLHttpRequest執行異步POST請求到服務器,發送數據。

2

您可以使用GET或POST將數據從一個傳遞到另一個。

1

您可以用PHP和JavaScript對做的最好的事情是開始在PHP中使用json_encode()和json_decode()函數。

這會將數據轉換爲JSON,這是JavaScript Object Notation允許您在兩種語言之間傳遞對象。你可以做一個評估,一旦你在JS中得到它的對象。

實際上移動數據應該取決於你正在做什麼,但很多時候我使用Ajax,這將是一個很好的開始看待的地方。

3

以下代碼顯示了一個ajax請求,它使用jquery ajax從後臺提交表單。我希望這是有道理的。

<html> 
<head><title>Sample</title></head> 
<script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> 
<script language="javascript"> 
    function submitMe() 
    { 
     variableString = 'name='+$("#name").val()+'&location='+$("#location").val(); 
     jQuery.ajax({ 
     type: "POST", 
     url: "http://google.com/some.php", 
     data: variableString, 
     success: function(msg){ 
     alert("Data Saved: " + msg); 
     } 
    }); 
    } 
</script> 
<body> 
    <form id="xyzForm"> 
     <input type="text" id="name" name="name"/> 
     <input type="text" id="location" name="location"/> 
     <input type="button" value="submit" onClick="submitMe();"/> 
    </form> 
</body> 
</html> 
+0

在這個答案中的關鍵是使用JQUERY,不要試圖手動做到這一點。 – 2009-12-28 07:51:51

3

首先,您需要了解php和javascript在不同的計算機上運行。

Php在服務器上運行,而JavaScript在客戶端計算機上運行。這使事情有點不直接。我的意思是,PHP和JavaScript不能直接更改變量,因爲它們不會同時運行。第一個php運行在服務器上,準備HTML和js並將其提供給客戶端,然後在客戶端計算機運行javascript,如果javascript需要來自服務器的某個東西,它會再次調用服務器(post,get或ajax無關緊要,它是仍然是一個http請求)。

因此,從PHP到JavaScript,您可以傳遞變量,同時準備的JavaScript,在哪個Pont只PHP運行和JavaScript沒有,從JavaScript到PHP,您可以傳遞變量請求從客戶端計算機到您的PHP服務器與一些變量。

相關問題