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 または 404 を返す場合、コールバック関数は呼び出されません。.error() という新しい関数を追加してみてください。

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

getJSON 呼び出しは非同期であり、アラートは数秒以内に発生するはずです。

理由は、URL の形式が正しくないために getJSON が機能しないためです。

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 に答える