0

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

我错过了什么吗?

感谢您的帮助和时间

4

6 回答 6

1

我的问题实际上不在 aspx 中,而是在控制器内部。我回来了:-

return Json(JsonRequestBehavior.AllowGet);

这显然是错误的,因为没有什么可以返回的。我将其更改为:-

return Json(new { ViewModel = viewModel }, JsonRequestBehavior.AllowGet);

现在它的工作!

感谢您的所有帮助和时间!

于 2012-10-17T09:01:35.097 回答
0

因为 getJson 没有完成。它一定是这样的var url = "/Home/LoadResXFile";

于 2012-10-17T07:29:10.600 回答
0

在所有情况下都不会调用回调函数,如果您调用的 URL 返回 500 OR 404,则不会调用它。尝试添加一个名为 .error() 的新函数,

$.getJson(url,data,function(){
})
.error(){
alert("error");
};
于 2012-10-17T07:30:02.643 回答
0

getJSON 调用是异步的,警报应在几秒钟内触发。

原因是 getJSON 不起作用,因为 URL 格式错误。

var url = "http://someurl/Home/LoadResXFile"; //maybe also extension needed.

见文档

还有一个错误:

e.preventDefault();

但是e没有定义:把点击改成这个

$("#btnLoadData").click(function(e){
于 2012-10-17T07:33:14.513 回答
0

如果您使用 fiddler 或 firebug 之类的工具,您能看到正在发出的 .getJSON HTTP 请求吗?

我的猜测是这个请求失败了,可能是因为 URI 不正确。

于 2012-10-17T07:33:35.277 回答
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!');
            });
        });
    });

这应该有效。

于 2012-10-17T12:50:16.783 回答