Json路径触发本地,但不会在发布时触发。为什么?

时间:2011-02-22 16:48:58

标签: c# .net jquery asp.net asp.net-mvc

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

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

发布时我应该将路径名称改为其他名称吗?如果是这样,如果可能的话,如何在我的webconfig中从本地版本切换到服务器版本?

还有其他选择吗?

3 个答案:

答案 0 :(得分:2)

  1. / Home / LoadTable = absolute = example.com/Home/LoadTable
  2. Home / LoadTable = relative = {current_url} / HomeLoadTable

答案 1 :(得分:0)

在Val的帮助下,我能够提出以下建议。

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

答案 2 :(得分:0)

永远不要对网址进行硬编码。处理网址时始终使用网址助手:

$.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;
    });
});