通过 JavaScript 从视图访问 Post 方法
Accessing Post method from View through JavaScript
我从我的视图访问操作结果[帖子]时遇到问题。
视图:
@using (Html.BeginForm()){
<form id="edit-order-form" action="@Href("~/Orders/Edit")">///EDIT:
....
<div class="row">
<span class="label"><label for="ShipPostalCode">PostalCode:</label></span>
<input type="text" id="txtShipPostalCode" name="ShipPostalCode" value="@ViewBag.ShipPostalCode" />
</div>
<div class="row">
<span class="label"> </span>
<input type="submit" id="btnSave" name="submit" value="Save" />
</div>
</fieldset>
</form>
<script type="text/javascript">
$("#btnSave").live("click", saveRecord);
function saveRecord() {
$.ajax(
{ type: "Post" ,
url: '@Url.Action("Save", "OrdersList")',
data: {
OrderID: $("#hdnOrderID").val(),
ShipName: $("#txtShipName").val(),
ShipAddress: $("#ShipAddress").val(),
RequiredDate: $("#RequiredDate").val(),
ShipPostalCode: $("#ShipPostalCode").val(),
},
dataType: "html" ,
success: function (data){
alert ('saved');
}
}).....
控制器:
[HttpPost]
//[ValidateAntiForgeryToken]
public ActionResult Save(int orderId = 0, string ShipName = "", string ShipAddress = "", string ShipPostalCode = "", DateTime? RequiredDate = null)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
using (SqlCommand cmd = new SqlCommand("GetOrders", conn))
{
conn.Open();
//SqlCommand cmd = new SqlCommand( "GetOrders", "connection string");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ID", orderId);
cmd.Parameters.AddWithValue("@ShipName", ShipName);
cmd.Parameters.AddWithValue("@ShipAddress", ShipAddress);
SqlParameter paramDate = cmd.Parameters.Add("@RequiredDate",
System.Data.SqlDbType.DateTime);
paramDate.Value = RequiredDate;
//cmd.Parameters.AddWithValue("@RequiredDate", RequiredDate);
cmd.Parameters.AddWithValue("@ShipPostalCode", ShipPostalCode);
//SqlParameter Total = cmd.Parameters.Add("@Total", SqlDbType.Int);
//Total.Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
conn.Close();
return View();
}
}
不会调用控制器操作。可能 javascript 函数也不是。
首先,您需要做的是将"btnSave"输入元素的"type"属性更改为"按钮",这样它就不会在单击时发布页面。具有"提交"类型的"输入"元素实际上将发布页面,当您想要在单击按钮时执行javascript时,这不是您想要的。
接下来,您需要做的是使用IE或Chrome并拉起开发人员工具"F12"。在 Chrome 中,点击"来源"标签,然后点击"元素"标签下方的"框箭头"打开"导航器"。找到保存您的 javascript 的文件,并在具有以下语法的行断点,$.ajax(
. 然后转到您的页面并单击"提交"按钮。从那里,你应该看到最有可能导致你的javascript失败的异常。
此外,您可能想打开"Fiddler"并观察您的 RESTful 服务的"发布"是否正在启动。
您是否尝试过改用document.forms[0].submit();
?要查看是发布还是您的 javascript 有问题?
同样 .live 已被弃用,您应该改用 .on。
示例代码:
$("#btnSave").on("click", saveRecord);
//or $("#btnSave").click( function(){
// document.forms[0].submit();
//});
function saveRecord() {
document.forms[0].submit();
})
并将保存操作结果的属性更改为[HttpPost]
及以下[ActionName("Edit")]
相关文章:
- 如何使用post方法从方法上传文件
- AJAX不会在文件上传后重定向到网页-POST方法
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 使用Ajax的问题's发送多个值的Post方法
- 使用javascript ajax post方法的未定义偏移PHP错误
- 如何使用get或post方法连接和执行ajax
- jQuery/Ajax-试图通过Ajax创建POST方法并获得对HTML的响应
- jQuery AJAX Post方法错误(语法错误)
- angularjs post方法中得到405错误
- 将c#get方法a转换为post方法,从javascript调用
- AngularJS中的AJAX调用post方法
- 使用 POST 方法通过 ajax 发送的数据在发送到服务器之前是否必须进行 URL 编码
- Jquery Ajax POST方法不工作,返回未定义的值
- 强制showModalDialog使用post方法
- 使用表单和POST方法通过Javascript获取URL参数
- Jquery Post方法在本地工作,但在服务器上不工作
- 将post方法与php、ajax和javascript结合使用
- 如何在POST方法之后使用javascript更改HTML内容
- 如何将非json值传递给angular.jshttp.post方法
- qoxdoo:POST方法,不在URL中显示参数