0

所以我有一个我试图通过 AJAX 提交的表单:这就是我设置它来测试我处理登录的 php 脚本的方式。

<form  class="login_form" method="post" action="login_ajax.php">
  Email: <input name="email" type="text" /> <br />
  Password: <input name="pass" type="password" /> <br />
  <input type="submit" />
</form>

这似乎有效;正确的凭证会产生良好的回报,具有“成功”属性的 json 对象,不正确的凭证会产生“失败”的 json 对象。

但是当我尝试设置脚本时,没有任何效果。

$(document).ready(function() {
    $(".login_form").submit(function () {
       try {
        $.post("login_ajax.php", {'email':this.email.value, 'pass':this.pass.value},
          function (data) {
              alert("Back from AJAX");
          }, 'json');
       alert("Sent to AJAX");
       }
       catch(e) {
        alert(e);
       }
       return false;
   });
});

我没有收到任何异常,但也没有收到“返回”警报。我只是得到“发送到 AJAX”,然后什么也没有。我对传递给 jQuery.post 的回调函数有什么误解,它永远不会被调用吗?

编辑:我用下面的 .post 行替换了我的 .post 行,它工作正常,成功函数被调用,我得到了我想要的数据。我的印象是这些基本上是等价的。

$.ajax("login_ajax.php", 
     {'type':'POST', 
      'data':{'email':this.email.value, 'pass':this.pass.value},
      'error':function(thingy,status,em) {alert("ERROR: "+em);}, 
      'success':function(data, status) {alert(JSON.stringify(data));} 
      });
4

2 回答 2

1

检查浏览器控制台中的网络选项卡,查看是否发布任何内容并查看服务器的响应,将其发布在这里。

您可能还想使用完整的 $.ajax() 方法并查看它是否适合您,您可以访问“错误”回调,而使用快捷方式 $.post 您没有。

更新:试试这个代码,告诉我们你得到了什么:

$.ajax({
        "url" : "login_ajax.php",
        "data" : {'email':this.email.value, 'pass':this.pass.value},
        "type" : "POST",
        "dataType" : "json",
        "success" : function(data){
            alert("Back from successful ajax request");
        },
        "error" : function(jqXHR, textStatus, errorThrown){
            alert("Oops, there was an problem: " + errorThrown);
        }

    });
于 2013-03-30T03:37:07.550 回答
0

您的代码正在运行,您可以查看演示。

演示

在 DEMO 中,您看不到返回警报,因为login_ajax.php文件不存在。

如果它仍然不工作检查 jQuery 加载不是因为在小提琴中 jQuery 将被自动添加。

如果现在仍然工作使用e.preventDefault();

Example

$(".login_form").submit(function (e) {
   e.preventDefault();
于 2013-03-30T03:41:36.240 回答