2013-04-02 3 views
1

Я хочу отправить данные формы, используя сообщение, используя ajax, потому что в форме 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'); 
    } 
    }); 
} 

Каждый раз, когда я выполняю функцию запроса, выполняется. Я пишу приложение в Google приложении. Я получаю эту ошибку:

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 = '[email protected]' 
    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&[email protected]%40gmail.com&Message=mlm%0D%0A#contact 

как я делаю ПОЛУЧАЕТ запрос может кто-то мне помочь .. Но как почтовый запрос изменяется, чтобы получить запрос.

+0

Если я хотел использовать сообщение формы, я бы хотел использовать пост ajax, чтобы остановить перенаправление, а также выполнить проверку формы на стороне клиента. – 2013-04-02 08:23:00

ответ

0

Пожалуйста, удалите тег формы и получите нужные значения по id, а затем используйте метод ajax. Потому что может быть ajax post и метод запроса формы противоречивы. Я думаю, что форма имеет метод получения по умолчанию, как вы сказали ранее, может быть, это причина всякий раз, когда вы нажимаете на отправку первого сообщения ajax после запроса сразу после метода get get и, возможно, именно по этой причине ошибка вызывается вашим сервером.

+0

Спасибо, что вы правы, я попробовал это сам, и это сработало, как только я удалил тег формы, все работало как шарм – 2013-04-02 11:39:47

0

Я думаю, что я знаю, что вы пытаетесь сделать, чтобы исправить это, вы можете сделать следующее:

удалить OnClick = «Sendmail()»

и изменить функцию JavaScript, чтобы что-то вроде:

$('#myContactForm').submit(function() { 
    $.ajax({ 
    url: "/email", 
    type: "POST", 
    data: $("#myContactForm").serialize(),success: 
     function(response) { 
     alert(response);   
     },     
     error: function(){            
     alert('failure');          
     } 
    }); 
}); 
1

Вы не препятствуете отправке по умолчанию. Либо верните false из функции sendMail, либо возьмите событие в качестве параметра и вызовите на нем preventDefault().

0
<form id="myContactForm" method="post"> 

Используйте сообщение в теге формы. Думаю, это вам очень поможет.

Смежные вопросы