【发布时间】:2011-08-15 23:31:21
【问题描述】:
这可能很简单,但我真的很想不通。基本上,我有一个带有一个输入的表单:电子邮件和一个提交按钮。这不是我做的,所以我了解的很少。我试图查找 .ajax jQuery 命令,但它仍然没有任何意义。
基本上,这就是我在 index.php 上的内容。
JS 和 HTML:
<!-- Subscription -->
<script>
$(function() {
$('form input.submit').click(function (event) {
event.preventDefault();
event.returnValue = false;
$.ajax({
type: 'POST',
url: 'subscribe.php',
data: {email: $('form input[type=email]').val()},
success: function(data) {
if (data == 'successful') {
$('#subscribe_status').html('Thanks for subscribing! We will let you know.').slideDown();
} else if (data == 'already_subscribed') {
$('#subscribe_status').html('This email is already subscribed.').slideDown();
} else if (data == 'invalid_email') {
$('#subscribe_status').html('This email is invalid.').slideDown();
} else {
$('#subscribe_status').html('Something went wrong. Please try again.').slideDown();
}
},
error: function () {
$('#subscribe_status').html('Subscription is not available.').slideDown();
}
});
});
});
</script>
<form action="#">
<input type="email" value="Your e-mail address..." onfocus="value=''" />
<input type="submit" class="submit" value="Notify me" />
</form>
订阅.php
include 'go.php';
$email = $_POST['email'];
$ip=$_SERVER['REMOTE_ADDR'];
$timestamp = date("m/d/y H:i A");
mysql_query("INSERT INTO subscribers (ip, email, timestamp) VALUES (INET_ATON('$ip'), '$email', '$timestamp') ") or die(mysql_error());
我基本上只是不断收到“出了点问题。请重试。”
【问题讨论】:
-
在您的 subscribe.php 中输入:“var_dump($_POST);”看看会发生什么
-
在您的成功函数中,
data参数将是您的 PHP 文件回显的任何内容。因此,如果您在成功的数据输入上没有回显(看起来可能正在发生),那么 JavaScript 会认为出现了问题。你能确认数据确实被输入到数据库中了吗? -
不,数据没有进入数据库。我应该有'回声“成功”吗?作为我的 php 的最后一行?编辑:那没有用。
-
那么下一步就是假设
$ip的一些虚拟值并手动执行SQL 查询。执行此操作时会收到什么错误消息? -
你真的应该附加一个调试器并查看你得到的响应。在 Chrome 中运行它并按 F12。转到网络选项卡并查看服务器告诉您的内容。 (旁注:我希望这只是测试/示例代码,因为它很容易受到...的攻击。)