2016-05-08 10 views
0

私はasp.netのMVCでは初心者だし、ビューのページで、その目的は、このAjaxの機能を記述するために、コントローラからのAjax変数への単純なJSONを取得したい:
なぜコントローラから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コードとAJAX関数コール:

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


はなく、AJAX機能でこの行:?

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


出力が定義されていないが、何が起こるコントローラリターンnullであるか、私は未定義の警告を得る理由のおかげ?。

+2

Ajaxは非同期であり、あなたのAJAX呼び出しが戻る前に、あなたの '警告が(..)'と呼ばれます値。表示したコードでは、出力がグローバルに宣言されているため、出力は "未定義"ではありません。 –

答えて

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

お返事ありがとう –

関連する問題