[英]AJAX isn't triggering PHP script
我一生无法弄清楚这里发生了什么。 我将打开另一个浏览器,以检查我所做的更改是否有效,也许其他浏览器已缓存了某些内容,它将起作用! 但是后来我又做了一次,似乎没有。 我要疯了。
在我的网站syllableapp.com上,我创建了一个可以连接的MySQL数据库。 我制作了一个连接到它的PHP脚本,向它添加了一个简单的条目,然后完成了。 它称为register_email.php
,可在此处访问。 通过该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?
只是一个猜测,但是在您的AJAX块中,将URL行更改为:
url: "register_email.php",
另外,作为测试,
(1)将AJAX成功功能中的Alert命令更改为:
alert(data);
和(2)在文件“ register_email.php”中的<?php
指令之后立即插入以下行:
die('Made it to here');
一些东西:
1)您的表单需要采取措施,否则它不是正确的HTML。 您可以将其设置为“#”之类的值
2)单击提交按钮时,您希望使用自定义ajax而不是通过标准方式提交表单。 您的click事件的ajax处理程序应类似于:
$('input[type="submit"]').click(function(event) {
event.preventDefault();
//...
});
您的代码中包含event.preventDefault,但是未将事件变量传递给该函数。 而且我认为您希望每次都调用event.preventDefault,而不仅仅是在输入验证失败的情况下。
3)代替使用警报,请尝试使用console.log并监视您的JavaScript控制台以查看是否出现任何错误。 将这些错误添加到您的问题中,以帮助我们解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.