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

C# .click(函数)不适用于$.getJSON,c#,jquery,asp.net-mvc,json,razor,C#,Jquery,Asp.net Mvc,Json,Razor,我想在单击按钮时触发控制器操作,我试图实现一些JQuery代码来实现这一点,但是单击没有正确触发 我有以下代码:- <script type="text/javascript"> $(document).ready(function () { $("#btnLoadData").click(function() { var ResXName = $('#ResXName').val(); var LangID = $('#LangID').

我想在单击按钮时触发控制器操作,我试图实现一些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>

$(文档).ready(函数(){
$(“#btnLoadData”)。单击(函数(){
var ResXName=$('#ResXName').val();
var LangID=$('#LangID').val();
var url=“../Home/LoadResXFile”;
e、 预防默认值();
$.getJSON(url,{value:ResXName,langID:langID},函数(数据){
警报('clicked!');
});
});
});
当我将警报移动到$getJSON上方时,它会工作,因此按钮被正确单击,但是当我将警报移动到$getJSON内部时,我不会收到任何警报,并且控制器操作也不会被触发

我错过什么了吗


感谢您的帮助和时间,因为getJson还没有完成。
它必须是这样的
var url=“/Home/LoadResXFile”

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


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

原因是getJSON无法工作,因为URL格式不正确

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

还有一个错误:

e.preventDefault();
但e未定义:将单击更改为

$("#btnLoadData").click(function(e){

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


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

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

return Json(JsonRequestBehavior.AllowGet);
这显然是错误的,因为没有任何回报。我把它改成:-

return Json(new { ViewModel = viewModel }, JsonRequestBehavior.AllowGet);
现在它开始工作了

谢谢你的帮助和时间

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

这应该可以工作。

getJSON调用是异步的,警报应该在几秒钟内发出。您知道getJSON实际上正在工作并返回吗?您有什么理由使用
e.preventDefault()我猜这会破坏你的函数。我确实删除了e.preventDefault(),但仍然不起作用。很明显,这个问题是URL,但是我在不同的项目中使用了相同的模式来更改dropdownlist,效果很好。你用Firefox+FireBug或Google Chrome调试过吗?我尝试过用Firefox+FireBug进行调试,但没有得到任何有用的反馈OK删除了e.preventDefault();我的问题是,我已经在另一个项目中做了类似的事情,url是一个相对路径,例如“./Controller/Action”,这很好,是URI,但我不知道为什么。在另一个项目中,同样的格式工作正常。
  $(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!');
            });
        });
    });