为什么服务器没有给我任何回复?

时间:2016-04-22 01:11:43

标签: jquery json ajax

所以我有一台应该返回JSON令牌进行身份验证的服务器。但它没有返回任何东西(我把它打印到控制台),甚至没有错误信息。大多数情况下,它已经发回一次或两次错误消息。我所尝试的是充实成功完成和错误功能。我知道我的表单元素正在被拾取,因为它们会打印到控制台。我有人确认服务器使用ajax请求,但这不会。我出于显而易见的原因,我没有发布服务器URL。

$(function()
  {

    $("#login").click(function()
    {
     var username = $("#username").val();
     var password = $("#password").val();
      login(username, password);

    });

       function login(username, password)
       {
       $.ajax
       ({
         url: "/",
         type: "POST",
         dataType: 'json',
         contentType: 'application/json',
         data: '{"username": "' + username + '", "password" : "' + password + '"}',
         success: function(data, text, xhr)
         {
           console.log(xhr.status);
            console.log(data);
            console.log(text);

         },
         error: function(xhr, status, error)
         {
           console.log("Error" + xhr + status + error);
         },
          complete: function(xhr, text)
          {
          console.log(xhr.status, text);
          } 
       });

       }

  });

在chrome中,它没有给我任何错误。但是在Firefox中:

POST file/ HTTP/1.1 200 OK
Error has occurederror jquery.min.js line 2 > eval:58:14
0 error jquery-latest.min.js line 2 > eval:62:13
Complete jquery-latest.min.js line 2 > eval:63:13
OPTIONS XHR addressofserver/ 
XHR Object Object { readyState: 0, getResponseHeader: 
.ajax/v.getResponseHeader(), getAllResponseHeaders: 
.ajax/v.getAllResponseHeaders(), 

setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 11 more… }

请注意,“完成”和“发生错误”是我在代码中编写的字符串。他们都指着Jquery。我知道jquery的链接正在工作,因为它正在抓取用户输入。

同样在POST下,它说内容类型是text / html,虽然我把它设置为json,否则看起来没问题:

Vary:   Accept-Encoding
Server: Apache/2.4.10 (Ubuntu)
Last-Modified:  Fri, 22 Apr 2016 20:10:32 GMT
Keep-Alive: timeout=5, max=100
Etag:   "c6c-531186b4ac855-gzip"
Date:   Fri, 22 Apr 2016 20:18:41 GMT
Content-Type:   text/html
Content-Length: 1078
Content-Encoding:   gzip
Connection: Keep-Alive
Host:   localhost
Connection: keep-alive
Accept-Language:    en-US,en;q=0.5
Accept-Encoding:    gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
选项

下的

Connection: keep-alive
Cache-Control:  no-cache
Access-Control-Request-Method:  POST
Access-Control-Request-Headers: content-type
Accept-Language:    en-US,en;q=0.5
Accept-Encoding:    gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

当我点亮它时,它也会在XHR对象下打印出来:

enter image description here

更新1:

我的一个按钮是在发送请求之前刷新页面。现在我得到了一个不同的错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at */link*. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

我正在尝试将其添加到$ .ajax:

        crossDomain: true,
       xhrFields: { withCredentials: true },

我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:0)

可以帮助您识别问题来源的事情:

  • 使用<form><input>发送正常的帖子请求并检查 服务器的响应
  • 打开浏览器开发工具,看看你是否得到 任何奇怪的事情
  • 调试实际问题的任何状态

还尝试按$.ajax更改$.post 请参阅此处的方法文档: https://api.jquery.com/jquery.post/