done()
部分,但由于某种原因总是在fail()
部分结束。我提供相关代码。
$(document).ready(function(){
// on-click listener
$("#btn-submit").click(function(e) {
// obtain data from the form
var employee = {
FirstName: $("#input-first-name").val(),
LastName: $("#input-last-name").val(),
BirthPlace: $("#input-birth-place").val(),
CurrentPlace: $("#input-current-place").val(),
Gender: $("#input-gender").val(),
Department: $("#input-department").val(),
OIB: $("#input-oib").val()
};
// AJAX call on button clicked
$.ajax({
type: "POST",
dataType: "json",
url: "http://127.0.0.1:8080/api/employee/",
data: employee
}).done(function(){
alert("Successfully created new entry!");
}).fail(function(xhr) {
//alert("Fail!");
console.log(xhr);
});
});
});
我正在尝试记录错误消息,但它只是这样:
{readyState: 0, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
服务器的响应生成如下。
[HttpPost]
[Route("")]
public HttpResponseMessage Post([FromBody]EmployeeDto employee)
{
long id = persistence.SaveEmployee(employee);
// create http response
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
response.Headers.Location = new Uri(Request.RequestUri, String.Format("/api/employee/{0}", id));
return response;
}
使用201 Created状态代码生成以下响应:
Date: Sat, 16 Sep 2017 11:11:51 GMT
Server: Mono.WebServer.XSP/4.4.0.0 MacOSX
Location: http://127.0.0.1:8080/api/employee/40
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
Content-Length: 153
Expires: -1
Pragma: no-cache
Cache-Control: no-cache
Content-Type: application/json; charset=utf-8
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
我真的不知道这意味着什么,也不知道为什么代码在实际设法发布新条目时会进入失败部分。有什么想法吗?
答案 0 :(得分:2)
我不确定这是你的情况,因为你从未提过从服务器返回的数据是什么 根据{{3}},从jquery 1.9开始,空响应也被拒绝。
以严格的方式解析JSON数据;任何格式错误的JSON都是 拒绝并抛出一个解析错误。截至jQuery 1.9,一个空的 回应也被拒绝;服务器应返回null响应 或{}代替。
答案 1 :(得分:0)
将function(xhr)
更改为
function(XMLHttpRequest, textStatus, errorThrown)
和您的控制台日志
console.log(XMLHttpRequest, textStatus, errorThrown);
因此,您现在可以监视请求中是否存在错误,因为我们现在还没有对您的Ajax请求进行任何操作。