2012-04-30 59 views
2

我想在asp.net mvc 3中做一個ajax獲取請求。它不起作用,即GetSquareRoot動作沒有命中?在ajax中獲取請求到控制器操作不起作用?

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> 

上HomeController的:

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

「不工作」是不是你的問題的說明,如何提供信息有關錯誤,服務器的響應(螢火蟲就可以方便這一點)等。 ? – spender

+0

閱讀帖子:行動沒有被擊中 – user603007

+0

我讀過了。在我的評論後,編輯來了。 – spender

回答

1

如果我安裝在本地主機上的以下頁面:

<!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 

你確定你已經告訴了我們整個故事嗎?

+0

這是jquery腳本引用,即使它在f12開發人員工具中顯示:( – user603007

0

我覺得你的jQuery的阿賈克斯是好的。但我發現你的按鈕標籤是錯誤的。

AS-IS

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

TO-BE

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

希望它會幫助你。

Luker。

+0

nope仍然不起作用 – user603007

0

不知道這是否會有所幫助,但該文檔指出的類型參數應閱讀GET ...不是Get

+0

nope仍然不起作用 – user603007

0
  1. 在網絡選項卡的開發者工具(F12)處檢查請求。 看到什麼熄滅,如果它去與參數
  2. 變化右控制器/動作的號碼類型爲int,而不是長(也許ModelBinder的鬥爭與結合長(不太可能)
  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 */ } 
        });