我想在onclick上访问我的控制器。表单是为另一个函数设置的回发。如果有表格,我知道如何发帖。有没有办法在不使用表格的情况下进入控制器,如果是,我该怎么做?
<% using (Html.BeginForm("OneMethod", "Home", FormMethod.Post, new { id = "formNext" })) {
<input id="addContent" type="button" onclick="addContent(ind1, ind2)"/>
<% } %>
jquery的
function(addContent(ind1, ind2) {
//post should go to "TwoMethod" and not "OneMethod" but not sure how...
$.post($(this).attr("action"), $(this).serialize(), function(response) {
//code
}, 'json');
}
答案 0 :(得分:4)
这是一个很好的函数我写的从AJAX发布它。
submitForm("home/twomethod", $("#formNext"),function(e){do stuff});
哪个电话:
function sumbitForm(url, DetailsForm, SuccessCallBack)
{
$.ajax({
url: url,
type: "POST",
contentType: "application/x-www-form-urlencoded",
dataType: "json",
data: $(DetailsForm).serialize(),
success: SuccessCallBack,
error: MyNamespace.handleAjaxError
});
}
答案 1 :(得分:3)
是的,您只需:
$("#some_ID_To_Button").click(function(){
$.post('/home/myaction', $("#formNext").serialize(), function(response) {
//code
}, 'json');
});
:)
答案 2 :(得分:0)
你调用$ .ajax来指定你要POST数据。 如您所见,url属性是控制器/操作,数据是您要发送的字段/属性的集合。 我在这里使用JSON,但你可以选择不同的方式。
url: '<%=Url.Action("DoSomething", "Home")%>',
data: { Name: $('#Field1').val(), MiddleName: $('#Field2').val(), Surname: $('#Field3').val() },
查看强>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<input type="text" id="Field1" name="Field1" value="" /><br />
<input type="text" id="Field2" name="Field2" value="" /><br />
<input type="text" id="Field3" name="Field3" value="" /><br />
<input type="button" id="post_data" name="post_data" value="Save" />
<script type="text/javascript">
$(document).ready(function() {
$('#post_data').click(function() {
$.ajax({
type: 'POST',
url: '<%=Url.Action("DoSomething", "Home")%>',
data: { Name: $('#Field1').val(), MiddleName: $('#Field2').val(), Surname: $('#Field3').val() },
dataType: 'json',
beforeSend: function(XMLHttpRequest) {
// You can do something before posting data.
},
complete: function(XMLHttpRequest, textStatus) {
var Response = $.parseJSON(XMLHttpRequest.responseText);
if ((XMLHttpRequest.responseText == 'false') || (Response.Status == false)) {
// FAIL
}
else {
// SUCCESS
alert(Response); // Should be true.
}
}
});
});
});
</script>
</asp:Content>
我的控制器返回一个布尔值,但您可以使用对象更改它。
<强>控制器:强>
[HttpPost]
public JsonResult DoSomething(string Name, string MiddleName, string Surname)
{
return (Json(true, JsonRequestBehavior.DenyGet));
}