2009-04-08 40 views
0

我生成這個PHP下面的HTML表單:奇怪的JavaScript表單行爲

echo "<form name=\"userForm\"> 
Username: 
<input type=\"text\" name=\"username\" /> 
<br /> 
First name: 
<input type=\"text\" name=\"firstname\" /> 
<br /> 
Last name: 
<input type=\"text\" name=\"lastname\" /> 
<br /> 
<input name=\"Submit\" type=\"submit\" value=\"Update\" onclick=\"submitUserInfo();return false\"/> 
</form>"; 

這是由submitUserInfo,這是在這裏處理:

function submitUserInfo() { 
    url = "edit_user.php?cmd=submitinfo&username="+document.userForm.username.value+"&firstname="+document.userForm.firstname.value+"&lastname="+document.userForm.lastname.value; 
    var xmlHttp=GetXmlHttpObject(); 
    if(xmlHttp.responseText == 'true') { 
     alert(url); 
     xmlHttp.open("GET",url,true); 
     xmlHttp.send(null); 
     //updateByUser(username); 
    } 
} 

我已清楚網址定義爲年初

edit_user.php?cmd=submitinfo&username 

但是按下提交按鈕時,它試圖發送的網址爲

edit_user.php?username= 

我不明白爲什麼。我在我的網站上使用了上述技術和其他表單,並且找不到任何理由排除了cmd = submitinfo &。

+0

什麼是GetXmlHttpObject實現?什麼是對responseText =='true'的檢查?如果你嘗試使url本地化(var url =「...」;),會發生什麼?如果您在構建它之後立即顯示網址,會發生什麼情況?如果在調用GetXmlHttpObject之後顯示它,會發生什麼? – ybo 2009-04-08 20:21:41

回答

0

使用類似Firebug的工具來確定瀏覽器是否正在發送它,而不使用cmd = submitinfo &或者它在服務器端丟失。

+0

不會顯示的網址一樣有用,看看我是否發送客戶端或不是? – 2009-04-08 20:15:19

+0

顯示它位置?你需要從問題的根源開始,看看它是否通過它發送的第一個地方 - 從瀏覽器開始。 – Matt 2009-04-08 20:24:18

0

變化:

url = "edit_user.php?cmd=submitinfo&username="+document.userForm.username.value+"&firstname="+document.userForm.firstname.value+"&lastname="+document.userForm.lastname.value; 

到:

var url = "edit_user.php?cmd=submitinfo&username="+document.userForm.username.value+"&firstname="+document.userForm.firstname.value+"&lastname="+document.userForm.lastname.value; 

您嘗試使用它之前,您必須聲明你url變量。

此外,避免echo直接HTML到頁面。你做這件事的方式對調試,更新和風格化將是一個絕對的痛苦。

0

jQuery這樣的框架對於這樣簡單的任務並不是真的需要,儘管如果你打算在你的網站上實現更多的JavaScript,我建議你看看。

你的代碼,使用jQuery,應該是這樣的:

$("#<id of form goes here>").submit(function() 
{ 
    $.ajax({ 
     data: { 
      "username": $("#<id of username-input goes here>").val(), 
      "firstname": $("#<id of firstname-input goes here>").val(), 
      "lastname": $("#<id of lastname-input goes here>").val() 
     }, 

     url: "edit_user.php" 
    }); 

    return false; 
}); 

看起來更好一點,我覺得:)


也;使用框架 - 特別是jQuery - 處理瀏覽器的變通方法..所以你不必..照顧他們,那就是:)

0

我認爲你需要改變按鈕從「提交」到「按鈕」:

<input name=\"Submit\" type=\"button\" value=\"Update\" onclick=\"submitUserInfo();return false\"/>