1

我想使用 ajax 使用 post 提交表单数据,因为在提交后的表单 post 中它被重定向到新页面。

<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

当我提出获取请求时,有人可以帮助我..但是发布请求如何更改以获取请求。

4

4 回答 4

1

您没有阻止默认提交。从您的 sendMail 函数返回 false,或者将事件作为参数并调用preventDefault()它。

于 2013-04-02T08:45:08.500 回答
0

我想我知道您要做什么,要解决此问题,您可以执行以下操作:

删除 onclick="sendMail()"

并将您的 JavaScript 函数更改为:

$('#myContactForm').submit(function () {
  $.ajax( {
    url: "/email",
    type: "POST",
    data: $("#myContactForm").serialize(),success: 
      function( response) {   
        alert(response);         
      },                  
      error: function(){                                              
        alert('failure');                                    
      }
    });
});
于 2013-04-02T08:30:05.010 回答
0

请删除表单标签并通过 id 获取所需的值,然后使用 ajax 方法。因为可能是ajax post和form request方法有冲突。我认为表单具有您之前所说的默认获取方法,这可能是每当您在表单获取方法之后单击提交第一个 ajax 发布请求时的原因,这可能是您的服务器抛出错误的原因。

于 2013-04-02T11:37:57.467 回答
0
<form id="myContactForm" method="post">

在您的表单标签上使用 post。我想这会对你有很大帮助。

于 2013-04-03T14:57:14.020 回答