.click(函数)不适用于$ .getJSON

时间:2012-10-17 07:26:41

标签: c# jquery asp.net-mvc json razor

我想在单击按钮时触发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中移动警报时,我没有收到任何警报,而且控制器操作也没有触发。

我错过了什么吗?

感谢您的帮助和时间

6 个答案:

答案 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.

see documentation

还有另一个错误:

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!');
            });
        });
    });

这应该有用。