1
我正面臨奇怪的問題。我正在實施一項SPA。我正在使用MVC,Sammy路由器,在這裏需要JS和Knockout。
這裏是一個文件,我定義了函數來調用API。
define(['jquery', 'UIBlock'], function ($) {
var GlobalParameters = function() {
this.Parameters;
this.APIEndPoint = 'http://localhost:24774/API/';
};
GlobalParameters.prototype.AjaxCallToServer = function (url, requestType, data, successCallback) {
$.blockUI();
$.ajax({
url: this.APIEndPoint + url,
data: data,
contentType: "application/json",
type: requestType,
statusCode: {
500: function() {
$('#info').html('<p>An error has occurred while processing your request.</p>');
$('#info').show();
},
409: function (xhr, ajaxOptions, thrownError) {
var message = JSON.parse(xhr.responseText).ExceptionMessage;
$('#info').html(message);
$('#info').show();
},
204: function (data) {
$('#info').html('<p>No data found.</p>');
$('#info').show();
}
},
dataType: 'json',
success: successCallback,
complete: function() {
$.unblockUI();
setTimeout(function() {
$('#info').hide();
$('#info').html("");
}, 3000);
}
});
};
return {
GlobalParameters: GlobalParameters
}
});
我添加了調試器,發現它只被調用一次。
以下是每個請求的詳細信息。
感謝Sanjay的回覆,與我的問題是,它的調用成功回調兩次。是否有任何方法可以從響應中識別出預檢反應或實際響應? –
@alok_dida不可能。瀏覽器本身使OPTIONS請求,它與ajax成功無關...只有當它被拒絕,然後它進入ajax錯誤 – charlietfl
@charlietfl ..問題是,如果你看到我的AJAX調用代碼,我有書面代碼專門針對不同的狀態代碼。在我的PUT API調用過程中,我收到了兩個不同的響應。一個是200(預檢請求),另一個是409(實際請求)。由於這個原因,我可以在屏幕上看到兩條消息。有沒有什麼方法可以避免或確定響應是來自Preflight請求還是實際請求? –