jquery - $.ajax 使 API 调用两次,尽管它只被调用一次

标签 jquery ajax asp.net-mvc requirejs sammy.js

我面临着奇怪的问题。我正在实现一个 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
    }
});

我添加了调试器,发现它只被调用一次。

这是来自 Google Chrome 开发者工具的网络跟踪。 enter image description here

以下是每个请求的详细信息。

enter image description here enter image description here

最佳答案

这是正常行为,称为预检请求。与简单请求不同,“预检”请求首先向其他域上的资源发送 HTTP OPTIONS 请求 header ,以确定实际请求是否可以安全发送

参见this了解更多详情。

关于jquery - $.ajax 使 API 调用两次,尽管它只被调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35739785/

相关文章:

jquery - 如何检查点击事件是否已经绑定(bind) - JQuery

JavaScript 放大镜

Javascript 播放/暂停按钮 键盘事件

php - jQuery 基本 Typeahead 实现 - 当字符串匹配第一个或最后一个字符时不起作用

asp.net-mvc - ViewData Dictionary 的范围是什么?

javascript - 在 mvc3 中更改 @Html.TextboxFor 的 onchange 事件的标签文本

javascript - 如何将 2 个或更多 jquery 函数与执行相同操作但名称不同的元素组合起来

jquery - 滚动时固定/ float div 元素

javascript - Ajax JSON 响应到 HighCharts

c# - 如何根据某些条件更改 MVC webgrid 行文本的颜色