2016-04-22 65 views
1

所以我有一個服務器應該返回一個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); 
      } 
     }); 

     } 

    }); 

在鉻,它沒有給我任何錯誤。但在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). 

我試圖在添加這到$阿賈克斯:

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

我雖然還是得到同樣的錯誤。

+0

檢查網絡選項卡中的devtools,看看是否被提出的要求以及它返回 –

+0

除此之外,沒有'accept'選項在jQuery ajax中。 (*也許你想'accept',但應該是一個plainObject而不是一個字符串*)。此外,如果您的服務器永遠不會超時並且出現問題,那麼您將不會收到任何信息(*您可能想使用'timeout'選項*).. –

+0

「主要是它發送了一次或兩次錯誤消息」 ---哪些錯誤? – WillardSolutions

回答

0

東西,可以幫助你找出問題的根源:

  • 發送帶有<form><input>普通帖子的請求,並檢查服務器
  • 打開瀏覽器開發工具的 響應,看看如果u得到 什麼奇怪的
  • 調試的實際概率的任何狀態

還嘗試改變這裏的$.ajax通過$.post 參見方法文檔: https://api.jquery.com/jquery.post/

相關問題