Ajax请求总是返回302 Object Moved错误

时间:2011-01-31 10:58:58

标签: jquery asp.net-mvc

无法为我的婚礼设置网站。希望有人能在重大日子之前找出问题所在:)

以下代码正在我的开发机器上工作,但是一旦我将它发布到我的服务器,它就会执行回发,然后在执行GET请求后进行imediatly。不应该发生GET请求。

我有一些基本的设置代码

$.ajaxSetup({
        beforeSend: function (xmlHttpRequest) {

//Used by the server to determine an async request
            xmlHttpRequest.setRequestHeader('X-Requested-With', 'jQuery');

            $.blockUI({ message: '<h3>Please wait...</h3>' });
        },
        complete: function (XMLHttpRequest, textStatus) {
            $.unblockUI();
        }
    });

这是绑定到锚标记的代码。请注意,我也在按钮和输入元素上尝试了这个,没有运气。

$('.basket-btn').click(function (src) {

        src.preventDefault();

        var form = $(src.target).closest('form');

        /* If the form contains validatable elements, then set this to false so the validation function is triggered. */
        var doWeValidate = !form.find('span[id$=_validationMessage]').length > 0;

        if (doWeValidate || !Sys.Mvc.FormContext.getValidationForForm(form[0]).validate('submit').length) {

            var destination = $(src.target).attr('data-destination');

            $.post(form.attr('action'), form.serialize(), function (data) {

                $("#" + destination).html(data);
            });
        }
    });

如果你想看到我正在谈论的问题,这是我的网站。

http://www.vinceandjeanswedding.com/GiftRegistry/

如果您输入金额并点击“贡献”,它将执行回发,然后(根据firebug)GET请求将会紧随其后。

请帮帮我。

3 个答案:

答案 0 :(得分:1)

我解决了这个问题。

我注意到在firebug中,第一个请求总是返回 302 Object Moved 错误。

只需在我的所有请求上放置正斜杠就可以解决问题。

所以现在 www.site.com/Home/

而不是 www.site.com/Home

答案 1 :(得分:0)

我看到它第一次正常工作(在Chrome中)。当数据返回时,您刷新表单中的所有内容。现在发生的事情是(新的)贡献按钮没有绑定到任何事件。

您想要更改以下内容

$('.basket-btn').click(function (src) {

$('.basket-btn').live('click', function (src) {

因此jQuery将捕获所有.basket-btn个事件,即使它们是在第一个绑定之后添加的。

<强>更新

在Firefox中,错误会立即发生。

你有一些奇怪的事情在继续。你的ajax似乎确实有效。但是它再次在ajax(包括所有脚本引用)中加载整个页面,导致一段时间后发生一个巨大的循环(它越来越多地加载(#contributions * #contributions次)脚本)。

答案 2 :(得分:0)

Just remove

cookieless="AutoDetect"

in your web.config file.