2

asp.net mvc 3 で ajax get リクエストを実行しようとしています。つまり、GetSquareRoot アクションがヒットしないのに機能しませんか?

index.cshtml

   @{
    ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">
        http://asp.net/mvc</a>.
</p>
<script type="text/javascript">
        function calculateSquareRoot(numberToCalculate) {
            $.ajax({
                type: 'Get',
                url: '/Home/GetSquareRoot',
                data: { number: numberToCalculate },
                success: function (data) { alert(data.result); }
            });
        }

</script>
<button onclick="calculateSquareRoot(9);">Calculate Square</button>

ホームコントローラーで:

public JsonResult GetSquareRoot(long number)
{
    var square = Math.Sqrt(number);
    return Json(new { result = square }, JsonRequestBehavior.AllowGet);
}
4

4 に答える 4

1

次のページを localhost にマウントすると:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" 
           src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js">
        </script>
        <script type="text/javascript">
        //<![CDATA[
            function calculateSquareRoot(numberToCalculate) {
                $.ajax({
                    type: 'GET',
                    url: '/Home/GetSquareRoot',
                    data: { number: numberToCalculate },
                    success: function (data) { alert(data.result); }
                });
            }
        //]]>
        </script>
    </head>
    <body>
        <button onclick="calculateSquareRoot(9);">Calculate Square</button>
    </body>
</html>

ボタンを押すと、以下に対して発行されたリクエストが表示されます。

http://localhost/Home/GetSquareRoot?number=9

あなたは私たちにすべてのことを話しましたか?

于 2012-04-30T12:29:59.727 に答える
1

これが役立つかどうかはわかりませんが、ドキュメントには型パラメーターを読み取る必要があると記載されていますGET...そうではありませんGet

于 2012-04-30T11:30:21.283 に答える
0

あなたのjQuery ajaxは良いと思います。しかし、ボタンタグが間違っていることがわかりました。

そのまま

<button onclick="calculateSquareRoot(9);">Calculate Square</button>

することが

<button type="button" onclick="calculateSquareRoot(9);">Calculate Square</button>

それがあなたを助けることを願っています。

ルカー。

于 2012-04-30T11:25:01.150 に答える
0
  1. ネットワークタブの開発者ツール(F12)でリクエストを確認してください。何が出るかを確認し、パラメーターを使用して正しいコントローラー/アクションに行くかどうかを確認します
  2. 数値のタイプを long ではなく int に変更します (おそらく ModelBinder が long へのバインドに苦労する可能性があります (ありそうにありません))。
  3. ajax 呼び出しにエラー関数を追加します。

       $.ajax({
            type: 'GET',
            url: '/Home/GetSquareRoot',
            data: { number: numberToCalculate },
            success: function (data) { alert(data.result); },
            error: function (jqXHR, textStatus, errorThrown) { debugger;/*see what happened */ }
        });
    
于 2012-04-30T12:32:28.760 に答える