subscriber使用ajax无法正常工作
subscriber is not working properly using ajax
在我的页脚中,我有一个订阅表单,任何用户都可以在其中订阅网站。
表单是
<form id="newsletter-signup" action="?action=signup" method="post">
<input type="email" name="email" id="email" placeholder="Email" required/>
<input type="submit" id="signup-button" value="" />
</form>
我想使用ajax来提交数据库中的数据。我以前从未使用过ajax,所以它有一个问题,我无法解决它。我使用了action action="?action=signup",因此每当我点击它时,它都会转到404.html。所有其他任务都很好。电子邮件存储在数据库中,所有其他检查也正常工作。我希望它不会转到404.html页面。相反,它应该显示成功订阅的消息。脚本部分是这样的。
脚本
$(document).ready(function() {
$('#newsletter-signup').submit(function() {
//check the form is not currently submitting
if ($(this).data('formstatus') !== 'submitting') {
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#signup-response');
//add status data to form
form.data('formstatus', 'submitting');
//send data to server for validation
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success: function(data) {
//setup variables
var responseData = jQuery.parseJSON(data),
klass = '';
//response conditional
switch (responseData.status) {
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
});
}
});
}
//prevent form from submitting
return false;
});
数据以这种方式存储在数据库中
if($_GET['action'] == 'signup'){
//Data storing code
}
所有这些文件都在footer.php中。
成功函数后,似乎出现了一些语法错误。
我在文档准备好后更新了这样的代码
$('#newsletter-signup').submit(function(e) {
e.preventDefault();
//check the form is not currently submitting
if ($(this).data('formstatus') !== 'submitting') {
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#signup-response');
//add status data to form
form.data('formstatus', 'submitting');
//send data to server for validation
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success: function(data) {alert(data);
//setup variables
var responseData = jQuery.parseJSON(data),
klass = '';
//response conditional
switch (responseData.status) {
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
}
})
}
});
试着使用一些调试工具,比如firebug。请尝试更新代码并进行检查。
试试这个就行了:
Html表单代码中的更正:
<form id="newsletter-signup" action="#123" method="post">
<input type="email" name="email" id="email" placeholder="Email" required/>
<input type="submit" id="signup-button" value="" />
</form>
不要使用?action=signup
给出正确的页面路径,即page.php?action=signup
,也不要使用ajax调用来保存表单数据并在同一页面上显示成功消息。
脚本代码中的更正:
$(document).ready(function() {
$('#newsletter-signup').submit(function() {
console.log("rohit");
return false;
//check the form is not currently submitting
if ($(this).data('formstatus') !== 'submitting') {
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = 'page.php?action=signup',
formMethod = form.attr('method'),
responseMsg = $('#signup-response');
//add status data to form
form.data('formstatus', 'submitting');
//send data to server for validation
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success: function(data) {
//setup variables
var responseData = jQuery.parseJSON(data),
class = '';
//response conditional
switch (responseData.status) {
case 'error':
class = 'response-error';
break;
case 'success':
class = 'response-success';
break;
}
}
});
}
});
//prevent form from submitting
return false;
});
page.php:
if($_GET['action'] == 'signup'){
// Your code comes here.
}
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- 最大高度转换不;不工作,工作缓慢
- Gulp-rev:不是第一次工作,而是在第一次工作之后工作
- JQuery - Ajax: encodeUriComponent不工作(EncodeUri工作)