3

任何人都可以看到我在这方面做错了什么,因为它让我有点生气(不确定是星期五大脑还是婴儿大脑)......

我有一个 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);

全球.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

4 回答 4

2

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

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

1)把它放在你的布局页面的脚本部分

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

2)在ajax url中添加“RootUrl”变量。(它也适用于您的 Js 文件,您在 ajax url 之前添加“RootUrl”)

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

它对我来说很有效,但是任何人都有其他解决方案,然后请发给我

于 2014-05-21T17:22:10.920 回答
0

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

于 2013-11-18T10:15:01.727 回答
0

实际上是我试图在控制器中访问 Amazon AWS,但没有将访问密钥放入配置中,我认为它没有进入该控制器,因为它没有到达第一行但是当我删除了很多控制器中的所有逻辑都很好地进入了控制器,因此根本不是ajax调用,而是内部的逻辑-我只是想,因为它没有到达第一行,所以它没有进入那里,事实并非如此. 因此,将控制器剥离为非常基本的让我知道实际问题是什么。

于 2013-11-18T11:52:31.473 回答
0

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

于 2013-11-15T10:36:16.687 回答