jquery ajax在mvc站点中调用不共享登录的会话

时间:2011-11-16 14:23:32

标签: asp.net-mvc asp.net-mvc-3 jquery

如标题

我们正在解雇

$('#id').load('someUrl', function(){/*some stuff*/});

但它似乎被传递到登录表单,因为它没有登录?!

用户已登录。这是正常的吗?

1 个答案:

答案 0 :(得分:0)

这也发生在我身上,但原因并不是ajax疯了 - 它可能看起来像 - 但是网址不正确。

该网站最初托管在localhost上,没有任何别名,因此我有一个像localhost / controller / action这样的工作URL。

然后我将网站移到别名下 - 所以网站的网址是localhost / alias。在这一点上,两个奇怪的事情对一些ajax请求感到高兴: - 提示请求进行身份验证(网站使用的是Windows身份验证) - 请求的会话与启动请求的页面不同

问题是某些网址在js代码中是硬编码的。因此,我们在ajax调用代码中使用了类似“url: '/controller/action'”的代码,并且此URL未考虑在IIS中托管网站的别名。

解决方案是在页面中声明一个js变量,并使用Url.Action为其分配以正确方式构建的URL,然后在ajax调用中使用该变量: 页:

<script type="text/javascript">
    var ajaxUrl = '@Url.Action("actionname", "controllername")';
</script>

Js文件:

    $.ajax({
                    type: 'POST',
                    url: ajaxUrl,
...