任何人都可以看到我做错了什么因为它让我有点生气(不确定它是星期五大脑还是宝宝大脑)无论如何......
我有一个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没有显示。
任何帮助都表示很高兴整个周末都没有这个问题!
非常感谢
答案 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)