Jquery ajax请求不起作用
Jquery ajax request not working
我以前使用过相同的代码,我检查了又检查,没有错误。这段代码似乎没有按照它应该做的去做。我不知道为什么。请帮忙。
ajax代码似乎不执行ajax请求,而是根据HTML中表单的设置提交一个普通的HTTPget/post请求。这意味着页面不断刷新。成功函数似乎甚至没有被调用。我已经检查了代码的其余部分是否正常工作,直到刷新页面的行$.ajax({)。这可能是我设置表单的方式吗?请注意,我没有提交按钮,因为表单根据按下的按钮向服务器发送不同的操作。
这是HTML代码:
<form id="frmVerify" name="frmVerify" method="post">
<p>Your account has not been verified. You must verify your email to continue logging into your account.</p>
<p>A verification token was sent to your email address, <strong id="username" name="username"><?php echo $_SESSION['username']; ?></strong>. Note that this token expires after 24 hours of issue.</p>
<p>Please check your email to retrieve this token:</p>
<p>
<input type="text" name="token" id="token" />
<button name="action" id="verify" value="<?php echo ACT_VERIFY; ?>">Verify</button>
</p>
<p>You can also: </p>
<p>
<button name="action" id="send" value="<?php echo ACT_SEND_TOKEN; ?>">Send another token</button><br />
<button name="action" id="change" value="<?php echo ACT_CHANGE_EMAIL; ?>">Change Email</button><br />
<button name="action" id="delete" value="<?php echo ACT_DELETE_ACCOUNT; ?>">Delete Account</button>
</p>
<p>
<input type="hidden" name="requester" id="requester" value="Verification" />
</p>
<p><a href="logout.php">Log out</a></p>
</form>
这是JQUERY代码:
function submitForm(action){
var username = $("#username").html();
var token = $("#token").val();
var requester = $("#requester").val();
if(validateLogin()){
$.ajax({
type: "post",
url: "verification.php",
data: "username="+username+"&token="+token+"&action="+action+"&requester="+requester,
success: function(data) {
try{
var jsonObj = $.parseJSON(data);
processOutput(action, jsonObj);
}catch(e){
$("#output").html("PHP module returned non JSON object: <p>"+data+"</p>");
}//try
}//success function
});//ajax
}else{
alert("Please fill UserName & Password!");
return false;
}//if validate
}
$(document).ready(function(){
$("#verify").click(function(){
var action = $(this).val();
submitForm(action);
});
$("#send").click(function(){
var action = $(this).value();
submitForm(action);
});
$("#change").click(function(){
var action = $(this).value();
submitForm(action);
});
$("#delete").click(function(){
var action = $(this).value();
submitForm(action);
});
});
它之所以表现得像一个普通的post,是因为默认情况下button
元素是一个提交类型,所以它在javascript执行完成之前就发布了。将html按钮更改为以下内容:
<button type="button" name="action" id="verify" value="<?php echo ACT_VERIFY; ?>">Verify</button>
您的代码可能还有很多问题需要解决,但问题集中在为什么它执行的是post而不是ajax post。
这是一个展示变化的jsfiddle。——http://jsfiddle.net/GSVdQ/1/
我认为<button>
元素默认情况下是提交按钮,因此当按下按钮时,您的单击处理程序会调用submitForm()
函数,但随后会发生默认行为并提交表单。试着用指定按钮
<button type="button" ...
或者,从点击处理程序返回false
(如果您需要按钮为禁用JS的浏览器执行传统提交)。
注意,您的代码可以大大简化,因为所有的.click()
处理程序都做相同的事情:
$(document).ready(function(){
$("#frmVerify button").click(function(){
submitForm($(this).val());
return false;
});
});
也就是说,当单击表单中的任何按钮时,都会将其值传递给submitForm()
函数。
$(this).value()
听起来不对。。。
相关文章:
- 为什么 AJAX POST 请求不起作用
- AJAX请求不起作用,除非使用alert()
- Ajax Post请求不起作用
- IE8 jquery ajax头请求不起作用
- jQuery点击功能在获取请求后不起作用
- 使用Javascript的Ajax请求在iPhone浏览器中不起作用
- JQuery AJAX请求不起作用
- Node.js cors请求-异步示例不起作用
- Ajax 对 JSON 的请求不起作用
- React JS js 中的 AJAX 请求不起作用
- 对 URL 的 JSON-P 请求不起作用
- Jquery ajax请求不起作用
- 带有ajax xml请求的Node js脚本不起作用
- Ajax请求三次都不起作用,然后就起作用了
- AngularJS http.jsonp请求.then和.success函数不起作用
- Jquery ajax发布请求不起作用
- 外部AJAX请求不起作用
- 对SOAP服务的Preflight OPTIONS请求不起作用
- 使用AJAX发出POST请求;不起作用
- 第二个ajax请求在移动浏览器上不起作用