我想在单击按钮时触发Controller Action,并且我尝试实现一些JQuery代码来执行此操作,但是单击不能正确触发。
我有以下代码: -
<script type="text/javascript">
$(document).ready(function () {
$("#btnLoadData").click(function() {
var ResXName = $('#ResXName').val();
var LangID = $('#LangID').val();
var url = "../Home/LoadResXFile";
e.preventDefault();
$.getJSON(url, { value: ResXName, langID: LangID }, function (data) {
alert('clicked!');
});
});
});
</script>
<div class="main-content">
<input type="button" id="btnLoadData" value="Load Data" />
</div>
当我将警报移到$ getJSON上方时,它会正常工作,因此按钮正在被正确点击,但是当我在$ getJSON中移动警报时,我没有收到任何警报,而且控制器操作也没有触发。
我错过了什么吗?
感谢您的帮助和时间
答案 0 :(得分:1)
我的问题实际上并不在aspx中,而是在控制器内部。我回来了: -
return Json(JsonRequestBehavior.AllowGet);
显然是错误的,因为没有什么可以归还的。我改为: -
return Json(new { ViewModel = viewModel }, JsonRequestBehavior.AllowGet);
现在正在工作!
感谢您的所有帮助和时间!
答案 1 :(得分:0)
因为getJson没有完成。
它必须是这样的var url = "/Home/LoadResXFile";
答案 2 :(得分:0)
在所有情况下都不会调用回调函数,如果您调用的URL返回500 OR 404,则不会调用它。 尝试添加一个名为.error()的新函数,
$.getJson(url,data,function(){
})
.error(){
alert("error");
};
答案 3 :(得分:0)
getJSON调用是异步的,警报应在几秒钟内触发。
原因是getJSON不起作用,因为URL格式不正确。
var url = "http://someurl/Home/LoadResXFile"; //maybe also extension needed.
还有另一个错误:
e.preventDefault();
但未定义e:将点击更改为此
$("#btnLoadData").click(function(e){
答案 4 :(得分:0)
如果您使用像fiddler这样的工具,或者firebug可以看到正在发出的.getJSON HTTP请求吗?
我的猜测是这个请求失败了,可能是因为URI不正确,例如。
答案 5 :(得分:0)
$(function () {
$(document).on('click', '#btnLoadData', function () {
var url = "@Url.Action("Action", "Controller")";
var postData = ({ value : $("#ResXName").val(), langID : $("#LangID").val()});
$.getJSON(url, postData , function (data) {
alert('clicked!');
});
});
});
这应该有用。