我想要做的就是将一个邮政编码发布到控制器,对邮政编码做一些事情,然后将更改发回邮政编码。但是我的参数a总是为空。谁能告诉我我做错了什么?
这是我的代码:
查看:
<input type="text" id="zipcode" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/Employer/employer/index';
var zipcode = $("#zipcode").val();
$("#zipcode").blur(function () {
$.ajax({
type: "POST",
url: serviceURL,
data: {'a':zipcode},
contentType: "application/json; charset=utf-8",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
});
控制器:
public ViewResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(string a)
{
return Json("test", JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:4)
请注意,在用户有机会与之交互之前,您将zipcode值存储在document.ready处理程序中的变量中。您应该在模糊处理程序中执行此操作,以确保获取实际值:
$("#zipcode").blur(function () {
var zipcode = $("#zipcode").val();
$.ajax({
答案 1 :(得分:1)
首先,您在页面中包含两个版本的jQuery,我强烈建议您删除一个版本。如果您想支持IE9,请使用1.9
;如果您不支持旧浏览器,请使用2.0
+。
此外,当jQuery序列化data
时,如果它不一定以JSON格式发送,那么contentType: "application/json; charset=utf-8"
设置可能会混淆MVC模型绑定器,将其删除。
最后,请注意zipcode
仅在页面加载时设置,您还应该在发送AJAX请求之前检索它。