【发布时间】:2016-01-12 08:54:44
【问题描述】:
我正在使用 AngularJS 构建一个单页网站,并且正在制作一个联系表。我查看了很多关于这个主题的 q/a,但没有一个解决方案对我有用。我有基本的 HTML:
<form id="ajax-contact" method="post">
<div class="field">
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
</div>
<div class="field">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div class="field">
<label for="message">Message:</label>
<textarea id="message" name="message" required></textarea>
</div>
<div class="field">
<button class="submit">Send</button>
</div>
</form>
<!--Contact Form Ajax, added in HTML for MVP purposes, will be changed later-->
<script>
$(document).ready(function() {
var name = $('#name');
var email = $('#email');
var message = $('#message');
$('button.submit').click(function() {
alert("Worked");
var contact_data = {
'sender_name': $(name).val(),
'sender_email': $(email).val(),
'sender_message': $(message).val()
};
console.log(contact_data);
$.ajax({
method:'POST',
url:'/php/contact.php',
data: contact_data
}).done(function(data) {
alert('Success!');
console.log('Submitted succesfully:' + data);
}).fail(function(textStatus, jqXHR) {
alert('Failed :(');
console.log(textStatus);
console.log(jqXHR);
});
});
});
</script>
我的 PHP(位于单独的文件中):
<?php
$name = isset($_POST['sender_name']) ? $_POST['sender_name'] : '';
echo $name;
?>
我没有在我的主视图中包含 php 文件,但是我正在通过查看 localhost:7070/php/contact.php 来检查回显的结果(如果我的 PHP 只是运行后端来发送一个电子邮件,我不需要将其包含在视图中)。当我查看回显时,我看到的只是空白,如果我删除了 isset 逻辑,我会收到“sender_name”的“未识别索引”错误。我究竟做错了什么?谢谢!
【问题讨论】:
-
在您的
php文件中创建print_r($_POST);并在开发者控制台中检查响应。 -
为什么标记为 Angularjs?
-
@JohannesJander 这是一个 AngularJS 应用程序,我已经达到了我要尽可能多地帮助诊断问题的地步
-
@AlexAndrei 当我这样做时,我得到的只是:Array()
-
只是想知道为什么人们会在 Angular 应用程序中使用除 Angular 之外的所有东西来读取表单字段并发布它们。
标签: php jquery html angularjs ajax