所以我有一台应该返回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对象下打印出来:
更新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 },
我仍然遇到同样的错误。
答案 0 :(得分:0)
可以帮助您识别问题来源的事情:
<form>
和<input>
发送正常的帖子请求并检查
服务器的响应还尝试按$.ajax
更改$.post
请参阅此处的方法文档:
https://api.jquery.com/jquery.post/