我有一个像下面这样的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
发出不存在的请求。
有没有办法解决这个问题?
答案 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);
});