javascript - Jquery ajax 请求不起作用

标签 javascript jquery html forms

我以前也用过同样的代码,检查了又检查,没有错误。不知怎的,这段代码似乎没有做它应该做的事情。我不知道为什么。请帮忙。

ajax 代码似乎不执行 ajax 请求,而是根据 HTML 中表单的设置提交正常的 HTTP get/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);
});
});

最佳答案

它表现得像普通帖子的原因是 button 元素默认是提交类型,因此它在 JavaScript 执行完成之前发布。将您的 html 按钮更改为以下内容:

<button type="button" name="action" id="verify" value="<?php echo ACT_VERIFY; ?>">Verify</button>

您的代码可能还有很多需要修复的地方,但问题集中在为什么它执行帖子而不是 ajax 帖子。

这是一个演示更改的 jsfiddle。 -- http://jsfiddle.net/GSVdQ/1/

关于javascript - Jquery ajax 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789202/

相关文章:

javascript - MongoDB Mongoose 更新updatedAt字段

javascript - Google Analytics API for Apps 脚本中的有机搜索段

javascript - 带有隐藏条形的 C3js 堆叠条形图

javascript - 将数据从一个 Backbone View 传递到另一个

jQuery 动画从中途开始

javascript - 如何检测两个手指触摸 : ReactJS

jquery - 带有标题显示表的 slider

HTML/CSS - 使用 SVG 创建仪表板的优点和缺点

php - 使用 $_POST 验证 html/PHP 字段中的重复条目

javascript - 在文本区域中设置为只读