2014-05-07 42 views
0

我在本地主机(Windows 8.1 x64)中向IIS 8部署了一个asp.net mvc 4网站。它在调试模式下的visual studio 2012中工作正常,但是当我部署到IIS 8 ajax请求根本不起作用,我得到了一个404错误的请求。顺便说一句,我可以CRUD数据库的任何东西,而不是JSON请求。任何建议??? !!!在本地主机上部署不能用于json请求

这是我的javascript代码:

@section scripts{ 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $(".visibility").click(function() { 
       var visibility = $(".visibility").attr("checked"); 
       var visibilityBool; 
       if (visibility == "checked") 
        visibilityBool = true; 
       else 
        visibilityBool = false; 
       $.ajax({ 
        url: "/Questionnaire/ChangeVisibility", 
        type: "GET", 
        data: { 
         "id": $(".questionnaire > h3").attr("data-id"), 
         "visibility": visibilityBool 
        }, 
        success: function (data) { 
        } 
       }); 
      }); 

     }); 
    </script> 
} 
+0

如果这是一个404错误,那么路径一定是不正确的。本地主机上的路径/问卷/ ChangeVisibility是什么? –

+0

检查你的ajax请求试图到达哪个URL,根据它的'url'选项修改ajax请求 –

+0

jay blanchard,是的路径它是不正确的,但就像我说,它工作正常,当我与视觉工作室和新闻F5。关于您的问题,ChangeVisibility是QuestionnaireController中的一个方法,在控制器文件夹 –

回答

1

而不是硬编码的网址,尽量UrlHelper.Action

url: '@Url.Action("ChangeVisibility", "Questionnaire")' 

一对夫妇的其他东西..

相反的$(".visibility").attr("checked"),使用this.checked。当用户选中该复选框时,该属性的值不会更改。

另外,这应该可能是post请求,而不是get。如果由于某种原因必须是get,请使用ajax选项cache: false

+0

下Jason P工作得很好,谢谢!但现在出现了一个新问题我第一次单击复选框来改变可见性工作正常,它会保存数据库中所做的更改并获得200响应,但是当我再次单击时不会保存它并让我一个304,没有改变数据库。我认为这是关于一些与缓存相关的,可能是?或者我错了? –

+0

现在我注意到,在Chrome浏览器等不同的浏览器中不会发生这种情况。它工作正常! –

+0

@LuisLopez看我的编辑。 –

相关问题