所以我有一個服務器應該返回一個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對象時,我高亮它:
更新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 },
我雖然還是得到同樣的錯誤。
檢查網絡選項卡中的devtools,看看是否被提出的要求以及它返回 –
除此之外,沒有'accept'選項在jQuery ajax中。 (*也許你想'accept',但應該是一個plainObject而不是一個字符串*)。此外,如果您的服務器永遠不會超時並且出現問題,那麼您將不會收到任何信息(*您可能想使用'timeout'選項*).. –
「主要是它發送了一次或兩次錯誤消息」 ---哪些錯誤? – WillardSolutions