2016-05-08 81 views
0

我在asp.net mvc的初學者,想從控制器簡單的JSON取阿賈克斯變量,在視圖頁面爲此寫AJAX功能:
爲什麼我無法從控制器從ajax函數中獲取數據?

<script> 
    var OutPut; 
    OutPut = "behzad"; 
    function CallService() { 
     $.ajax({ 
      url: '@Url.Action("callService", "myPassword")', 
      type: 'GET', 
      dataType: 'json', 
      cache: false, 
      data: { 'id': 2 }, 
      success: function (color) { 
       OutPut= color; 

      }, 
      error: function() { 
       alert('Error occured'); 
      } 
     }); 
     alert("I think is ok!"+":"+OutPut); 

    } 
</script> 


與此控制器:

[HttpGet] 
     public JsonResult callService(int id) 
     { 
      string JSON = "behzad"; 
      return Json(JSON,JsonRequestBehavior.AllowGet); 

     } 


阿賈克斯函數調用鑑於此頁面的html代碼:

<button type="button" class="btn btn-success" onclick="CallService()">Success</button> 


但此行中的AJAX功能:

alert("I think is ok!"+":"+OutPut); 


輸出是不確定的,發生什麼事是控制器返回null或爲什麼我得到了一個未定義的警報感謝?。

+2

AJAX異步是和你的'警報(..)'將你的Ajax調用返回之前調用值。在你顯示的代碼中,輸出將是「behzad」(不是未定義的),因爲你已經在全局聲明瞭它。 –

回答

2

由於AJAX調用是異步的,你應該把警報的成功回調:

<script> 
    function CallService() { 
     $.ajax({ 
      url: '@Url.Action("callService", "myPassword")', 
      type: 'GET', 
      cache: false, 
      data: { 'id': 2 }, 
      success: function (color) { 
       alert("I think is ok!" + ":" + color); 
      }, 
      error: function() { 
       alert('Error occurred'); 
      } 
     }); 
    } 
</script> 
+0

感謝您的回答 –

相關問題