Jquery 为什么服务器没有给我任何响应?

Jquery 为什么服务器没有给我任何响应?,jquery,json,ajax,Jquery,Json,Ajax,所以我有一个服务器,应该返回一个JSON令牌进行身份验证。但是它没有返回任何东西(我让它将消息打印到控制台),甚至没有错误消息。大多数情况下,它会返回一次或两次错误消息。我尝试的是充实成功完成函数和错误函数。我知道我的表单元素正在被提取,因为它们打印到控制台。我已经让人确认服务器正在处理ajax请求,但这不会。我没有发布服务器的URL,原因很明显 $(function() { $("#login").click(function() { var username

所以我有一个服务器,应该返回一个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(),overrideMetype:
.ajax/v.overrideMetype(),
statusCode:.ajax/v.statusCode(),abort:.ajax/v.abort(),状态:
.Deferred/d.state(),始终:。Deferred/d.always(),然后:
.Deferred/d.then(),还有11个…}

请注意,“Complete”和“Error has ocursed”是我在代码中编写的字符串。他们都指向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对象下打印:

更新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 },

不过,我仍然遇到同样的错误。

可以帮助您确定问题根源的方法:

  • 使用
    发送正常post请求,并检查 服务器的响应
  • 打开浏览器开发工具,看看你是否 有什么奇怪的吗
  • 调试实际prob的任何状态
还可以尝试通过
$.post
更改
$.ajax
请参见此处的方法文档:

可以帮助您确定问题根源的方法:

  • 使用
    发送正常post请求,并检查 服务器的响应
  • 打开浏览器开发工具,看看你是否 有什么奇怪的吗
  • 调试实际prob的任何状态
还可以尝试通过
$.post
更改
$.ajax
请参见此处的方法文档:

检查开发工具中的“网络”选项卡,查看是否发出了请求及其返回的内容。除此之外,jQuery ajax中没有
accept
选项。(可能您希望
接受
,但这应该是一个纯对象,而不是字符串)。此外,如果您的服务器从未超时,并且出现问题,您将无法返回任何信息(您可能希望使用
timeout
选项)…“大多数情况下,它会返回一次或两次错误消息”-错误是什么?实际上只是添加了错误。它们只出现在firefox上,而不出现在chrome上。你能给你的电视或遥控器吗?让我来修复它。4.检查开发工具中的网络选项卡,看看是否发出了请求以及返回了什么。除此之外,jQuery ajax中没有
accept
选项。(可能您希望
接受
,但这应该是一个纯对象,而不是字符串)。此外,如果您的服务器从未超时,并且出现问题,您将无法返回任何信息(您可能希望使用
timeout
选项)…“大多数情况下,它会返回一次或两次错误消息”-错误是什么?实际上只是添加了错误。它们只出现在firefox上,而不出现在chrome上。你能给你的电视或遥控器吗?让我把它修好