首页 > 解决方案 > jquery ajax事件没有触发

问题描述

在这里发疯,多年来一直使用 jquery 的 ajax,即使语法和它调用的服务都没有错,但仍然无法找出问题所在,但成功、错误和完成事件根本不会火。我向控制台发出警报和日志,但没有任何反应。

$.ajax({
                url: 'DDService.asmx/LoadCountries',
                dataType: 'json',
                method: 'post',
                data: {},
                success: function (data) {
                    alert('success');
                    console.log('success');
                },
                error: function (err) {
                    alert('error');
                    console.log('Error (RetrieveCountriesDD): ' + JSON.stringify(err, null, 2));
                },
                complete: function () {
                    alert('complete');
                    console.log('complete');
                }
            });

我在服务中放了一个代码中断,它被调用并返回我指定的 json(就像我说的,我以前做过很多次,这让我很困惑),我将 dataType 更改为 text、html 和即使完全删除它,仍然没有事件触发,也没有任何错误。使用 jQuery 3.3.1 - 尽管所有其他 ajax 调用都在使用相同的语法(这里有什么我遗漏的吗?)。Web 服务返回的示例:

[{"T":"United States","V":"1"},{"T":"Canada","V":"2"},{"T":"Afghanistan ","V":"86"},{"T":"Albania ","V":"89"},{"T":"Algeria ","V":"117"},{"T":"American Samoa ","V":"92"},{"T":"Andorra ","V":"90"},{"T":"Angola ","V":"87"},{"T":"Anguilla ","V":"88"}, 

任何人都知道什么会导致ajax事件不触发?注意:为简洁起见,我省略了数据解析部分(以填充简单的下拉列表),因为这不是问题所在 - 应该在控制台中显示警告框或其他内容,但在调用服务后什么都没有发生。

标签: javascriptjqueryjsonajax

解决方案


好吧,我是个白痴。为了调用测试函数,我使用了一个回发按钮,而不是输入类型=“按钮”。
基本上,发生了两个不同职位的战争。
Firefox 将尝试发布到 ajax 服务,同时还尝试通过按钮发布 - 这会产生奇怪的安全错误。Chrome 将尝试发布到 ajax 服务,然后执行按钮发布(并忽略警报)。IE 是个婊子,只有在一切运行才会进行按钮 POST 。:) Opera 很像 IE,但可能会也可能不会以正确的顺序进行 POST。


推荐阅读