奇怪的javascript表单行为

时间:2009-04-08 20:03:30

标签: php javascript html ajax

我用这个php生成以下html表单:

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&amp;被排除在外。

4 个答案:

答案 0 :(得分:0)

使用像Firebug这样的工具来确定浏览器是否正在发送它而不使用cmd = submitinfo&amp;或者如果它在服务器端丢失了。

答案 1 :(得分: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到页面。你完成它的方式是调试,更新和风格化的绝对痛苦。

答案 2 :(得分: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 - 负责浏览器的解决方案..所以你不必......照顾他们,就是:)

答案 3 :(得分:0)

我认为您需要将按钮的类型从“提交”更改为“按钮”:

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