控制器操作仅在第一个 getJSON 或 AJAX get 请求时执行

发布于 2024-11-19 13:56:48 字数 470 浏览 0 评论 0原文

当用户单击链接时,我使用 JQuery 和 MVC2 发出 AJAX 请求。这些链接在 jQuery 中使用 .live,如下所示:

$('.listdelete').live('click', function (event) {

            event.preventDefault();

            url = '/Controller/Action';

            data = getArguments();

$.getJSON(url, data, function (data) {

                alert('success!');

            });

当我在控制器中放置断点时,我可以看到在第一个用户单击时,找到并执行了控制器操作。在随后的单击中,getJSON 调用将执行成功警报,但不会执行控制器代码。将 .live 与 getJSON 一起使用是否有问题?

I'm using JQuery and MVC2 to make an AJAX request when the user clicks on a link. The links are using .live in jQuery like so:

$('.listdelete').live('click', function (event) {

            event.preventDefault();

            url = '/Controller/Action';

            data = getArguments();

$.getJSON(url, data, function (data) {

                alert('success!');

            });

When I drop a break point in my controller I can see that on the first user click the controller action is found and executed. On subsequent clicks the getJSON call executes the success alert, but the controller code is not executed. Is there a problem using .live with getJSON?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沦落红尘 2024-11-26 13:56:48

问题可能在于(如果您使用的是 IE)浏览器缓存了您的请求。所以你已经成功了,但没有做出真正的决定。为了避免这种情况,你应该这样做:

$('.listdelete').live('click', function (event) {

            event.preventDefault();

            url = '/Controller/Action';

            data = getArguments();
            //get the timestamp
            var nocache = new Date().getTime();

            //add the timestamp as a paramter to avoid caching
            data['nocache'] = nocache;

$.getJSON(url, data, function (data) {

                alert('success!');

            });

The problem probably lies (if you are using IE) in the fact that the browser caches your request. So you have a success but no real call is made. To avoid this you should do something like this:

$('.listdelete').live('click', function (event) {

            event.preventDefault();

            url = '/Controller/Action';

            data = getArguments();
            //get the timestamp
            var nocache = new Date().getTime();

            //add the timestamp as a paramter to avoid caching
            data['nocache'] = nocache;

$.getJSON(url, data, function (data) {

                alert('success!');

            });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文