2016-07-02 2 views
0

У меня есть следующие формы HTML:Использование AJAX для запуска PHP без перезагрузки страницы

<form class="clearfix" method="POST"> 
<input name="name" type="textbox" placeholder="Name:"> 
<input name="email" type="textbox" placeholder="Email:"> 
<textarea name="message" placeholder="Message:"></textarea> 
<input name="submit" type="submit" id="submit" value="submit"> 
</form> 

Что запускает PHP скрипт (который работает), но повторно направляет пользователя на пустую страницу, содержащую PHP (то есть. идет на mywebpage.com/send_mail.php). Используя AJAX, как я могу запустить PHP-скрипт в фоновом режиме без повторной загрузки страницы?

Я следующий запрос AJAX, но это не похоже на работу:

$('#submit').click(function(e) { 
e.preventDefault(); 
var data = { 
    name: $("#name").val(), 
    email: $("#email").val(), 
    message: $("#msg").val() 
}; 

$.ajax({ 
    url: '../send_mail.php', 
    type: 'POST', 
    data: data, 
    success: function(msg) { 
     alert('Email Sent'); 
    } 
}); 
}); 

Любая помощь, почему она не работает? На данный момент, все это делает (при ударе представить), это перейти прямо на страницу PHP и, кажется, игнорируют AJAX

+0

Первое изменение 'url: ../ send_mail.php,' to 'url: '../ send_mail.php,'' с чем вы столкнулись? –

+0

@Alok Пожалуйста, см. Мое редактирование - нет ошибки, страница просто перезагружается и не отправляет письмо – blueprintChris

+0

'# submit' не существует – Chay22

ответ

1

Это становится перезагрузки, потому что это кнопка submit и добавляется в form так это отправка формы на клик не дожидаясь AJAX, чтобы получить представленный.

Вы можете использовать метод jQuery preventDefault(), чтобы остановить перенаправление страницы. Подобно этому,

$('#submit').click(function(e) { 
e.preventDefault(); 
var data = { 
    name: $("#name").val(), 
    email: $("#email").val(), 
    message: $("#msg").val() 
}; 

$.ajax({ 
    url: '../send_mail.php', 
    type: 'POST', 
    data: data, 
    success: function(msg) { 
     alert('Email Sent'); 
    } 
}); 
}); 

Когда preventDefault();, действие по умолчанию для события не будет инициировано.

Вы также пропустили кавычки, чтобы указать URL в .ajax().

jsFiddle:https://jsfiddle.net/3Lpft17y/

+0

Пробовал это, но все равно игнорировал AJAX. Должен ли я сохранять 'method =" POST "action =" send_mail.php "' в атрибутах формы html? – blueprintChris

+0

Да, он все еще освежается? Или вы столкнулись с любой другой проблемой? –

+0

Да, похоже, что страница по-прежнему игнорирует AJAX и делает прямо на php-страницу. – blueprintChris

0

Используйте тип входа в качестве кнопки type = "button" вместо представить.

+0

Ссылка, определяющая определение из MDN, может помочь https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/button#attr-type – Chay22

+0

Я пробовал это, но ничего не происходит – blueprintChris