我想使用post使用ajax提交表单数据,因为在提交后的表单帖子中,它会被重定向到新页面。
<form id="myContactForm">
<p>
<label for="byour_name">Your name</label><input type="text" name="byour_name" value="" id="byour_name">
</p>
<p>
<label for="byour_email_address">Your email address</label><input type="text" name="byour_email_address" value="" id="byour_email_address">
</p>
<p>
What's on your mind?<br>
<textarea name="Message" rows="10" cols="25"></textarea>
</p>
<p>
<input type="submit" value="Send it!" onClick="sendMail()">
</p>
</form>
function sendMail() {
$.ajax( {
url: "/email",
type: "POST",
data: $("#myContactForm").serialize(),
success: function( response) {
alert(response);
},
error: function() {
alert('failure');
}
});
}
每次我发出请求错误功能正在执行。我正在谷歌应用引擎上编写应用程序。我一直收到这个错误:
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
我的帖子请求处理程序是:
def post(self):
Content = self.request.get("Message")
byName = self.request.get("byour_name")
byEmailAddress = self.request.get("byour_email_address")
gmailUser = 'id@gmail.com'
gmailPassword = 'password'
dataSend = byName
mail.send_mail(sender = gmailUser,
to = gmailUser,
subject ="Email Sent By : "+ byName + "@" + byEmailAddress,
body = Content)
self.response.out.write(byEmailAddress)
点击提交按钮后,URl变为:
http://localhost:8080/?byour_name=username&byour_email_address=userEmail@gmail.com%40gmail.com&Message=mlm%0D%0A#contact
因为我正在制作获取请求,所以有人可以帮助我。但是发布请求如何更改以获取请求。
答案 0 :(得分:1)
您没有阻止默认提交。要么从sendMail函数返回false,要么将事件作为参数并在其上调用preventDefault()
。
答案 1 :(得分:0)
我想我知道你要做什么,为了解决这个问题,你可以做到以下几点:
删除onclick =“sendMail()”
并将您的JavaScript函数更改为:
$('#myContactForm').submit(function () {
$.ajax( {
url: "/email",
type: "POST",
data: $("#myContactForm").serialize(),success:
function( response) {
alert(response);
},
error: function(){
alert('failure');
}
});
});
答案 2 :(得分:0)
请删除表单标记并按ID获取所需的值,然后使用ajax方法。因为可能是ajax帖子和表单请求方法是冲突的。我认为表格有默认的get方法,正如你之前所说的那样,这就是你在表单get方法之后很快点击提交第一个ajax post make请求的原因,这可能就是你的服务器抛出错误的原因。
答案 3 :(得分:0)
<form id="myContactForm" method="post">
在表单标签上使用帖子。我认为它会对你有所帮助。