ajax post在本地工作但在部署时没有

时间:2013-11-08 15:20:57

标签: ajax asp.net-mvc

任何人都可以看到我做错了什么因为它让我有点生气(不确定它是星期五大脑还是宝宝大脑)无论如何......

我有一个Ajax帖子在本地工作正常但在部署到另一台服务器时不起作用。

我已经提出了很多警报,以确保我获得了我期望的参数,因此不太确定是什么。

这是ajax帖子:

查看:

 var theUrl = "/Widgets/TestBin2AutomationResults/" + widgetImpressionId + "/" + retailerProductId + "/" + quantity;
                        alert("widgetImpressionId" + widgetImpressionId);
                        alert("retailerProductId" + retailerProductId);
                        alert("quantity" + quantity);
                        alert(theUrl);
                        $("#imgaddtocart").hide();
                        $("#addMe").unbind('click');
                        $("#delete").unbind('click');

                        $.ajax({
                            type: "POST",
                            url: theUrl,
                            data: { 'username': username, 'password': password },
                            dataType: "json",
                            success: function (data) {

                                if (data != null) {
                                    alert("we are inside data");

控制器:

        [JsonpFilter]
        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult TestBin2AutomationResults(int widgetImpressionId, int retailerProductId, int quantity, string username, string password)
        {


            MessageBox.Show("We are inside TestBin2Automation controller " + widgetImpressionId + "/" + retailerProductId + "/" + quantity + "/" + username + "/" + password);

Global.asax中

 routes.MapRoute("Bin2SubmitTestBin2Automation", "Widgets/TestBin2AutomationResults/{widgetImpressionId}/{retailerProductId}/{quantity}", new { controller = "Widgets", action = "TestBin2AutomationResults", widgetImpressionId = 0, retailerProductId = 0, quantity = 0, username = "", password = "" });

我没有进入控制器,因为MessageBox.Show没有显示。

任何帮助都表示很高兴整个周末都没有这个问题!

非常感谢

4 个答案:

答案 0 :(得分:1)

我在mvc项目中也面临这个问题......

我通过以下步骤解决了这个问题。

1)将它放在脚本部分的<布局页面

<script type="text/javascript">
    var RootUrl = '@Url.Content("~/")';
</script>

2)添加&#34; RootUrl&#34; ajax url中的变量。 (它还在你的js文件中添加&#34; RootUrl&#34;在你的ajax url之前)

var theUrl = RootUrl +"Widgets/TestBin2AutomationResults/" + widgetImpressionId + "/" + retailerProductId + "/" + quantity;

它对我来说是完美的,但是任何人都有其他解决方案然后发布给我

答案 1 :(得分:0)

由于ajax post在本地工作,请尝试在实时Web服务器上启用CORS。跨域域名是您遇到问题的可能原因。在你的后端使用什么?是PHP,ASP.NET还是Python?

答案 2 :(得分:0)

您的网址以“/”开头,这意味着它将尝试从域根解析网址。请验证您的应用程序是部署在域的根目录中还是部署在任何虚拟目录下。如果它部署在虚拟目录下,则需要在进行AJAX调用时更改JavaScript代码以包含虚拟目录。

答案 3 :(得分:0)

实际上,我试图在控制器中访问亚马逊AWS,但没有将Access密钥放入配置中,我认为它没有进入该控制器,因为它没有触及第一行但是当我几乎删除了控制器中的所有逻辑,它进入控制器就好了所以它根本就不是ajax调用而是内部的逻辑 - 我只是认为它没有到达第一行它没有进入那里这种情况。因此,将控制器拆开为非常基本的,让我知道实际问题是什么。