我不能为我的生活弄清楚这里发生了什么。我将打开一个不同的浏览器来检查我更改的内容是否有效,也许我的其他浏览器缓存了一些东西,它会起作用!但后来我又这样做,似乎没有。我疯了。
在我的网站syllableapp.com上,我创建了一个可以连接的MySQL数据库。我创建了一个连接它的PHP脚本,为它添加了一个简单的条目,并完成了。它被称为register_email.php
,可以访问here。通过该URL手动访问它将添加该条目。其代码如下:
<?php
$db = new mysqli("localhost", "username", "password", "table");
if ($db->connect_error) {
echo "Could not connect to database.";
exit;
}
else {
$db->query("INSERT INTO emails (email) VALUES ('weird')");
echo 1;
}
?>
如果我检查,它会被添加。
但是,我希望从表单中添加它。我在http://syllableapp.com/test/index.html有一个HTML文件,如下所示:
<html>
<head>
<title>Syllable - iPhone Speed Reader</title>
<link rel="stylesheet" href="styles/style.css">
<script type="text/javascript" src="scripts/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="scripts/scripts.js"></script>
<script type="text/javascript" src="scripts/jquery-ui-1.8.23.min.js"></script>
</head>
<body>
<div class="content">
<img src="images/app-icon.png" alt="App icon">
<h1>Syllable</h1>
<p>Speed reading app for iPhone. Devour all your Instapaper and Pocket articles, and learn to read much faster in the process.</p>
<form method="post" action="">
<input type="email" class="email" placeholder="Email me when it's live">
<input type="submit" class="submit" value="Send">
</form>
<a href="http://twitter.com/syllableapp"></a>
</div>
</body>
</html>
因此,当用户提交表单时,我链接到顶部的JavaScript文件会截取提交按钮,并调用AJAX函数将其提交到PHP表单。这个jQuery看起来像:
$(document).ready(function() {
$('input[type="submit"]').click(function() {
var email = $.trim($('.email').val());
var emailRegEx = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if (email == "" || !emailRegEx.test(email)) {
event.preventDefault();
$(this).effect("shake", { times:2 }, 75);
}
else {
$.ajax({
type: "POST",
url: "http://syllableapp.com/test/register_email.php",
data: { "message": "hi" },
success: function(data) {
alert("success");
},
error: function(jqXHR, textStatus, errorThrown) {
alert("failure");
}
});
}
});
});
这基本上只检查它是否是有效的电子邮件地址,如果是,则调用PHP文件。
但是,每次点击提交时,都表示失败。为什么发生这种情况?为什么我可以直接访问它,但它不会让我使用AJAX?
答案 0 :(得分:0)
只是一个猜测,但在您的AJAX块中将URL行更改为:
url: "register_email.php",
另外,作为测试,
(1)将AJAX成功函数中的警报命令更改为:
alert(data);
和(2)在文件&#34; register_email.php&#34;:
中紧跟<?php
指令后插入此行
die('Made it to here');
答案 1 :(得分:0)
一些事情:
1)你的表格需要一个动作,否则它不是正确的HTML。您可以将其设置为“#”
之类的值2)当您单击“提交”按钮时,您希望使用自定义ajax提交表单,而不是通过标准方式。 click事件的ajax处理程序应该是:
$('input[type="submit"]').click(function(event) {
event.preventDefault();
//...
});
您的代码中有event.preventDefault,但事件变量未传递给该函数。而且我认为你希望每次调用event.preventDefault,而不仅仅是在输入验证失败的情况下。
3)尝试使用console.log并监控javascript控制台,看看是否有任何错误,而不是使用警报。将这些错误添加到您的问题中以帮助解决您的问题。