2011-02-22 92 views
0

我有一个可以在本地正常工作的.js文件,但是当我提交并添加到我的服务器时,我有点问题。我的控制器名称为“Home”,JsonResult函数为“LoadTable”。Json路径触发本地,但未发布。为什么?

$(document).ready(function() { 
$('#tableClick').click(function() { 
    $.post("Home/LoadTable", $('#FormTable').serialize(), function (data) { 
     alert("test"); 
    }, 'json'); 
}); 
}); 

我应该在发布时使用路径名吗?如果是的话,如果可能的话,我如何在我的webconfig中从本地切换到服务器版本?

还有其他的选择吗?

+0

哪里是`首页/ LoadTable?我的意思是在哪个目录下? – Val 2011-02-22 16:58:00

+0

@Val - 我不确定dir是什么。 LoadTable位于HomeController.cs文件中并更改为上面的函数。希望这可以帮助。 – MrM 2011-02-22 17:01:52

回答

2
  1. /主页/可装入=绝对= example.com/Home/LoadTable
  2. 首页/可装入=相对= {} current_url/HomeLoadTable
0

随着瓦尔的帮助下,我能想出与以下。

var pathName = window.location.pathname; 
if (pathName == "/") { pathName = ""; } 
$.post(pathName + "Home/LoadTable", $('#FormTable').serialize(), function (data) { 
    alert("test"); 
}, 'json');  
0

永远不要硬编码的网址。使用URL处理时,必须使用网址助手:

$.post(
    '<%= Url.Action("LoadTable", "Home") %>', 
    $('#FormTable').serialize(), 
    function (data) { 
     alert('test'); 
    }, 
    'json' 
); 

另一种可能性是有联系的地方在页面上:

<%= Html.ActionLink("Load table", "LoadTable", "Home", null, new { @class = "loadTable" }) %> 

,你会AJAXify:

$(function() { 
    $('.loadTable').click(function() { 
     $.post(this.href, $('#FormTable').serialize(), function (data) { 
      alert('test'); 
     }, 'json'); 
     return false; 
    }); 
});