2014-11-05 95 views
0

我有一個HTML頁面設置爲一個形式如下:困惑的動作標籤

<form name="form" action="process.php" method="POST"> 
    Username: <input type="text" name="user"> 
    <br> 
    Password: <input type="text" name="pass"> 
    <br> 
    <input type="submit" value="LOGIN"> 
</form> 

當我點擊我的提交按鈕,將數據發送到我的process.php腳本,這是一切都很好。

但我想要做的就是發送一個JSON字符串PHP腳本,而是和有PHP腳本解析它。 因此我嘗試了以下內容:

<body> 
PLEASE ENTER YOUR INFORMATION: 
<form name="form" action=""> 
    Username: <input type="text" name="user"> 
    <br> 
    Password: <input type="text" name="pass"> 
    <br> 
    <input type="submit" value="LOGIN" onclick="encrypt(this.form, 0)"> 
</form> 
</body> 


<script LANGUAGE="JavaScript"> 

function encrypt(form, key){ 

    var user = form.user.value; 
    var pass = form.pass.value; 
    var str = {"username": user, "encrypted_password": pass}; 
    var JSON_str = JSON.stringify(str); 

    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", "process.php", true); 
    xhr.send(JSON_str); 

} 

</script> 

然而,這好好嘗試一下做任何事情。當我點擊提交按鈕時沒有任何反應。即使我點擊「提交」按鈕時,只能得到process.php來顯示某些內容,那也是非常有用的。

謝謝!

+0

你能提供一些上下文嗎?爲什麼作爲json字符串發送? – Ghost 2014-11-05 03:43:54

+0

您應該看看AJAX調用,您可能會覺得它很有趣! – Philibobby 2014-11-05 03:45:36

+0

恐怕我是javascript/php的noob,所以我沒有理由說爲什麼作爲JSON字符串發送會比表單數據更差/更好。 我只對將數據發佈到腳本後發生的情況感到困惑。 在我看來,action =「process.php」告訴瀏覽器運行該腳本,但只發布JSON字符串「發送」字符串。 我怎樣才能讓它運行php腳本?謝謝 – 2014-11-05 03:50:20

回答

2

如果你想使用onclick事件,那麼你就需要更換按鈕提交。

<input type="button" value="LOGIN" onclick="encrypt(this.form, 0)"> 

並使用javascript提交表單。

+0

謝謝,但你能解釋我怎樣才能避免提交表單與JavaScript?我想發送一個JSON字符串到我的PHP腳本並讓它運行。現在即使我點擊我的按鈕,也沒有任何反應。我留在同一頁面上。 – 2014-11-05 03:55:13

+0

如果您使用type =「button」,您的表單將不會提交。要提交表單usig,您需要編寫代碼。 – 2014-11-05 09:03:48