如何使jQuery请求路径与ASP.NET MVC上的根URL连接?

时间:2013-10-17 11:42:39

标签: jquery asp.net

我有一个像下面这样的jQuery脚本。

$.ajax({
    type: "post",
    url: "/TestPage/Parameter",
    data: JSON.stringify(formData),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',

    success: function (data, textStatus, jqXHR) {
        alert('created!');
    },
    error: function (xhr, status, p3, p4) {
        var err = "Error " + " " + status + " " + p3;
        if (xhr.responseText && xhr.responseText[0] == "{")
            err = JSON.parse(xhr.responseText).message;
        alert(err);
    }
});

我的网站有一个默认网页www.example.com,与www.example.com/Home/Index相同。

当我访问www.example.com并触发jQuery时,它运行正常。该网站向www.example.com/TestPage/Parameter发送请求,但当我访问www.example.com/Home/Index并触发该脚本时,它会向www.example.com/Home/Index/TestPage/Parameter发出不存在的请求。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

让ASP.NET MVC帮助程序为您完成工作。在表单的标记中使用@Url.Action帮助程序。 See this document

<form action="@Url.Action("Parameter", "TestPage")" method="POST">

然后,在您的JQuery中,您可以解析表单属性。

var postForm = function (item) {
    var $form = $(item).parents('form:first');
    var options = {
        url: $form.attr("action"),
        type: $form.attr("method"),
        data: $form.serialize()
    };

    $.ajax(options);
}      

在提交时调用该函数,单击任意按钮并传入this

$('body').on('click','#create', function () {
    postForm(this);
});