javascript ajax成功函数没有woking?

时间:2017-02-19 06:21:53

标签: javascript php jquery ajax

我知道这有很多重复,但不知何故这两个问题(我在堆栈溢出中搜索几乎所有相同的标题)工作。 我的问题是成功函数不会触发警报消息,我无法弄清楚原因。

<form>
  <div class="form-group">
    <label for="">Username</label>
    <input type="text" class="form-control" id="user" name="user" placeholder="Username">
  </div>
  <div class="form-group">
    <label for="">Password</label>
    <input type="password" class="form-control" id="pass" name="pass" placeholder="Password">
  </div>
  <div class="form-group">
    <label class="radio-inline">
      <input type="radio" data-toggle="buttons-radio" name="optRadio" value="prof">Professor
    </label>
    <label class="radio-inline">
      <input type="radio" data-toggle="buttons-radio" name="optRadio" value="admin">Admin
    </label>
  </div>
  <button type="button" class="btn btn-block btn-social" onClick="validateForm()">
    <span class="fa fa-twitter"></span>Login
  </button>
</form>

javascript文件

function validateForm() {
  var checkUser = document.getElementById("user").value;
  var checkPass = document.getElementById("pass").value;
  var checkOption = $("input[name=optRadio]:checked").val();
  /*
    if (checkUser && checkPass && checkOption) { //checks if user is not empty
    } else {
        alert ("Please fill up all information");
    }
  */
  if (checkOption == "prof") {
    $.ajax({
      type: 'POST',
      url: 'assets/connection/login.php',
      dataType: 'json',
      data: {
        user: checkUser,
        pass: checkPass,
      },
      beforeSend: function() {
        alert("a")
      },
      success: function(response) {
        alert(response)
      }
    });
  }
}

并且php文件只包含此

<?php echo "js test" ?>

编辑:正如评论和@ Rax Weber的回答所指出的,sucess中存在一个印刷错误(应为{{1} } ),但这不是问题的根本原因,而且success在纠正后仍然不会触发。

2 个答案:

答案 0 :(得分:3)

原因是,您已设置dataType: 'json',但未获得JSON响应。 可能的解决方案:

  1. JSON 发送回复。 在发布文件中,发送JSON编码输出:<?php echo json_encode("js test"); ?>

  2. 将dataType设置为default。从JS中删除行dataType: 'json'

答案 1 :(得分:1)

应该成功,而不是成功。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int date, month, year;
    printf("Please enter the date in the form of dd/mm/yyyy: ");
    if (scanf("%d/%d/%d", &date, &month, &year) == 3) { 
       printf("the date you entered was:  %d-%d-%d\n", date, month, year);
    } else {
       printf("You have made an error\n");
    }
    return 0;
}

修改:问题已更新/修改。以前,它有一个语义错误,如上所述。