2017-07-06 95 views
0

我創建這個AJAX功能:爲什麼AJAX調用不會成功?

function getAssociatedProperties(callback, error) { 
    $.ajax({ 
     url: '/LayerProperty/get', 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: 5, 
     crossDomain: true, 
     success: callback, 
     error: function() { 

     } 
    }); 
} 

這裏是我的web API類:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 

namespace GeomindMobile.Controllers 
{ 
    public class LayerProperty : ApiController 
    { 
     // GET api/<controller> 
     public IEnumerable<string> Get() 
     { 
      return new string[] { "value1", "value2" }; 
     } 

     // GET api/<controller>/5 
     public string Get(int id) 
     { 
      return "value"; 
     } 

     // POST api/<controller> 
     public void Post([FromBody]string value) 
     { 
     } 

     // PUT api/<controller>/5 
     public void Put(int id, [FromBody]string value) 
     { 
     } 

     // DELETE api/<controller>/5 
     public void Delete(int id) 
     { 
     } 
    } 
} 

每當AJAX功能解僱我得到這個錯誤:

http://localhost/LayerProperty/get 404 (Not Found) 

更新

Here is my RouteConfig: 

     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 

什麼是錯我的代碼?爲什麼AJAX調用不會成功?

+0

你應該只通過API/LayerProperty/5沒有API/LayerProperty /獲取/ 5 – Milney

+0

'跨域:TRUE'你爲什麼用這個?你需要在同一個域上模擬一個跨域請求嗎?因爲這就是這個設置所做的。 – ADyson

+0

你可以發佈你的路由配置嗎? – juunas

回答

-1

你在URL錯誤。

function getAssociatedProperties(callback, error) { 
    $.ajax({ 
     url: '/api/LayerProperty/get', 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: 5, 
     crossDomain: true, 
     success: callback, 
     error: function() { 

     } 
    }); 
} 
2
function getAssociatedProperties(callback, error) { 
    $.ajax({ 
     url: '/api/LayerProperty', // <--- You do not need the 'get' here, but you do need the /api/ 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: 5, 
     crossDomain: true, 
     success: callback, 
     error: function() { 

     } 
    }); 
} 
+0

Milney,爲後期的感謝。但是,當我用你的例子中,我得到這個錯誤:無法加載資源:服務器的狀態爲迴應404(未找到) – Michael

0

可以請你在下面的代碼改變你的方法是什麼?

[HttpGet] 
public IEnumerable<string> get() 
{ 
      return new string[] { "value1", "value2" }; 
} 
0

使用控制器名稱與您的控制器,然後將火從Ajax請求,目前你沒有使用正確的MVC中的命名規則。

你的

public class LayerProperty : ApiController 

public class LayerPropertyController : ApiController