IE的MVC 4 Application / jQuery Ajax POST问题

时间:2012-07-19 14:48:42

标签: asp.net-mvc jquery

我有一个ASP.NET MVC 4应用程序。此应用程序将通过iFrame嵌入到另一个站点(不同的域)。

部分应用程序具有获取基于州的城市列表的功能。我正在使用jQuery Ajax来做到这一点。除IE之外,所有浏览器都在工作。

根据我的谷歌搜索,我了解到我需要使用XDomainRequest for IE。所以这是代码:

/* For dynamically getting list of cities by state */
        $("#state").change(function() {
            $(".city").empty();
            if ($(this).val() != "") {
                if ($.browser.msie && window.XDomainRequest) {
                    var data = "state=" + $(this).val();
                    var xdr = new window.XDomainRequest();
                    xdr.open("POST", "/Search/GetCities");
                    xdr.send(data);
                    xdr.onload = function() {
                        var json = $.parseJSON(xdr.responseText);
                        if (json == null || typeof(json) == 'undefined') {
                            json = $.parseJSON(data.firstChild.textContent);
                        }
                        processData(json);
                    };
                    xdr.send();
                } else {

                    $.ajax({
                        type: "POST",
                        url: "/Search/GetCities",
                        data: {
                            state: $(this).val()
                        },
                        dataType: "json",
                        success: function(data) {
                            if (data == '') {
                                $("#state").change();
                            } else {
                                $(".city").css("display", "none");
                                var items = "<option value=\"\" selected>Please Select</option>";
                                $.each(data, function(i, item) {
                                    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
                                });
                                $(".city").append(items);
                                $(".city").css("display", "");
                                $(".city").attr('disabled', false);
                            }
                        }
                    });
                }
            }
        });
        /* End dynamically getting list of cities by state */

这是踢球者。使用FF,Chrome和Safari,身份验证cookie在Ajax调用中传递,但不在IE中传递,因此IE认为我不是身份验证用户,因此它使用登录URL进行响应。

我缺少什么让这项工作与IE一起工作?

谢谢!

1 个答案:

答案 0 :(得分:0)

我的问题是你的问题与你用于帖子的jquery无关,而是与IE的跨域cookie有关。

尝试添加P3P标头。关于这个问题的一个好的SO线程可以在这里找到:

Cookie blocked/not saved in IFRAME in Internet Explorer