2015-11-06 78 views
0

我想使用AJAX和jQuery向我的MVC控制器發送手機號碼和emailID,以檢查這些細節是否已經存在於數據庫中。如何使用AJAX和JQuery將數據發佈到ASP.NET MVC控制器

當我使用我的操作方法,然後我得到錯誤的[HttpPost]屬性: - 「跨來源請求阻止:同源策略不允許讀取URL上的遠程資源

如果我刪除[HttpPost]屬性,那麼我的操作方法獲取調用,但在行動方法參數接收到的所有值都爲空。

以下

是操作方法的代碼。

 public class LogOnModel 
    { 
     public string Mobile { get; set; } 
     public string EmailID { get; set; } 

    } 

    [HttpPost] 
    [AllowAnonymous] 
    ///AJAXService/LogOnAjax 
    public ActionResult LogOnAjax(LogOnModel obj) 
    { 
     return Json(true); 

    } 

下面是我的AJAX調用。

 var LoginModel = { 
     'Mobile': "ASH", 
     'EmailID': "MITTAL", 

    }; 
    $.ajax({ 
     url: 'http://localhost:51603/AJAXService/LogOnAjax', 
     type: 'GET', 
     contentType: 'application/json', 
     dataType: 'jsonp', 
     data: JSON.stringify(LoginModel), 
     success: function (result) { 
      if (result == true) { 
       window.location = "/Dashboard"; 
      } else { 
       $QuickLoginErrors.text(result); 
      } 
     } 
    }); 

我已將下面的代碼放在我的web.config文件中以避免CORS錯誤。

<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
    </customHeaders> 

請幫忙如何使用AJAX後調用操作方法/獲取一些數據 我新的ASP.NET MVC和掙扎了很多解決這個問題。

+0

如果您發佈到您自己的網站,我不會期望發生CORS錯誤。你能檢查URL是否正確? –

+0

你看到了嗎? http://stackoverflow.com/questions/6290053/setting-access-control-allow-origin-in-asp-net-mvc-simplest-possible-method – JamieD77

回答

2

如果AjaxService控制器與您正在處理的視圖位於相同的項目中。

var LoginModel = { 
    Mobile: "ASH", 
    EmailID: "MITTAL" 
}; 

$.ajax({ 
    url: '@Url.Action("LogOnAjax","AJAXService")', // try to use Url Helper when possible 
    type: 'POST', // use Get for [HttpGet] action or POST for [HttpPost] 
    //contentType: 'application/json', not needed 
    //dataType: 'jsonp', jsonp is for sending to a site other than the current one.. 
    data: LoginModel, // no need to stringify 
    success: function (result) { 
     if (result == true) { 
      window.location = "/Dashboard"; 
     } else { 
      $QuickLoginErrors.text(result); 
     } 
    } 
}); 
+0

不,我剛剛創建了這個HTML代碼在一個簡單的test.html文件,然後通過Chrome瀏覽器打開這個html文件。我沒有這個代碼在我看來.. –

+0

非常感謝傑米...我只是補充說,在我的觀點,一切都開始工作後,AJAX電話.....非常感謝。 –

1

保持[HttpPost]和你$.ajax行前添加此行:

$.support.cors = true; 

也能改變你$.ajax方法,以配合您[HttpPost]。更改行:

type: 'GET', 

method: 'POST', 

注意:這隻能在IE中爲我工作。 Chrome仍拒絕完成Ajax調用。但是,那是一段時間了,我不確定新版Chrome是否適用於這一行。

非常重要的注意事項:只有在開發中使用這條線。不要使用此行編譯您的應用程序。

相關問題