Javascript AJAX发送表单中的所有字段

Javascript AJAX发送表单中的所有字段,javascript,jquery,ajax,post,Javascript,Jquery,Ajax,Post,我有一个调用CGI脚本的HTML文件。当我单击注销按钮时,POST方法发送所有字段。这是已知的bug吗 以下是我的Javascript代码: var request = null, session = null; function postEscape(val) { return encodeURIComponent(val).replace(/%20/g, "+") } function submit_logout() { var request=

我有一个调用CGI脚本的HTML文件。当我单击注销按钮时,POST方法发送所有字段。这是已知的bug吗

以下是我的Javascript代码:

var request = null, session = null;
    function postEscape(val) {
        return encodeURIComponent(val).replace(/%20/g, "+")
    }



    function submit_logout() {
var request=null
if( !document.form.loggedIn.checked ) return
logout = new XMLHttpRequest()
logout.open("POST", "client.cgi", true /* asynchronous? */ )
logout.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
console.log("action=logout&session=" + postEscape(document.form.session.value)+"&host="+postEscape(document.form.host.value)+"&port="+postEscape(document.form.port.value))
logout.send("action=logout&session=" + postEscape(document.form.session.value)+"&host="+postEscape(document.form.host.value)+"&port="+postEscape(document.form.port.value)+"&action=logout")
form.loggedIn.checked = false

}
这是我在POST数据中看到的:

username=&password=&host=somehost.com&port=6700&action=logout&display=+++&session=

这是我的表格

<body>
<form name = "form">
<input name="username" size="25" type="text">username<br>
<input name="password" size="25" type="text">password<br>
<input name="host" size="25" type="text">host<br>
<input name="port" size="25" type="text">port<br>
<input name="login" value="Login" type="button" onclick="submit_login()"><input        type="checkbox" name="loggedIn" id = "loggedIn" onclick="this.checked=!this.checked">

<input name="action" value="logout" type="submit" onClick="submit_logout()"><br>
<textarea name="display" rows="24" cols="68">    </textarea><br>
<input type="hidden" name="session" value="">
<input name="message" size="64" maxlength="64" type="text"><input name="send"     value="send" type="button" onClick = "send()"><p></p>
  </form>

用户名
密码
主机
端口


使用
$('form').serialize()

将显示所有表单字段

使用
$('form')。serialize()


将显示所有表单字段

请尝试更改以下内容:您正在提交所有内容,因为注销时使用了
type=“submit”
。它应该是一个
type=“button”

按钮不会提交表单-默认情况下它们不会执行任何操作。它们通常与JavaScript结合使用,作为AJAX应用程序的一部分

按钮将在用户单击时提交它们所在的表单,除非您使用JavaScript另行指定

<input name="action" value="logout" type="submit" onClick="submit_logout()">

//type=“button”

尝试更改以下内容:您正在提交所有内容,因为注销时使用了
type=“submit”
。它应该是一个
type=“button”

按钮不会提交表单-默认情况下它们不会执行任何操作。它们通常与JavaScript结合使用,作为AJAX应用程序的一部分

按钮将在用户单击时提交它们所在的表单,除非您使用JavaScript另行指定

<input name="action" value="logout" type="submit" onClick="submit_logout()">

//type=“button”
试试这个:

onClick="submit_logout(); return  false;"
或:

…然后
返回false
submit\u logout()
函数中

或者将按钮更改为
type=“button”

目前,由于您的按钮是
type=“submit”
,它会导致表单进行正常(非Ajax)提交。更改类型或返回false将阻止此操作。

尝试以下操作:

onClick="submit_logout(); return  false;"
或:

…然后
返回false
submit\u logout()
函数中

或者将按钮更改为
type=“button”


目前,由于您的按钮是
type=“submit”
,它会导致表单进行正常(非Ajax)提交。更改类型或返回false将防止出现这种情况。

我实际上可以在URL中看到帖子数据,这不是问题所在。问题是脚本发布了我甚至不想发布的内容。我实际上可以在URL中看到发布数据,这不是问题所在。问题是脚本正在发布我甚至不想发布的内容。您是否从console.log和post中获得了不同的值?console.log在这里没有返回任何内容。我正在使用Google Chrome的开发者控制台。你是否从console.log和post中得到了不同的值?console.log在这里没有返回任何内容。我用的是谷歌Chrome的开发者控制台。先生,你的眼光很敏锐。谢谢!先生,你的眼睛很敏锐。谢谢!
onClick="return submit_logout();"