2017-07-06 4 views
0

Ich schaffe diese Ajax-Funktion:Warum Ajax-Aufruf nicht erfolgreich?

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() { 

     } 
    }); 
} 

Und hier ist meine Web-api Klasse:

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) 
     { 
     } 
    } 
} 

Jedes Mal, wenn Ajax-Funktion feuerte ich diesen Fehler:

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

aktualisieren

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 } 
      ); 
     } 

Was ist falsch an meinem Code, warum Ajax-Aufruf nicht erfolgreich ist?

+0

Sie sollten nur api/LayerProperty/5 nicht api/LayerProperty/Get/5 – Milney

+0

'domänenübergreif passieren: true', warum diese verwenden? Müssen Sie eine crossDomain-Anfrage für dieselbe Domain simulieren? Weil das ist, was diese Einstellung tut. – ADyson

+0

Können Sie Ihre Routing-Konfiguration auch posten? – juunas

Antwort

-1

Sie haben einen Fehler in der 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, danke für die Post. Aber wenn ich dein Beispiel verwende, erhalte ich diesen Fehler: Ressource konnte nicht geladen werden: Der Server hat mit dem Status 404 (nicht gefunden) geantwortet. – Michael

0

Können Sie bitte Ihre Methode mit folgendem Stück Code ändern?

0

Verwenden Sie den Controller-Namen mit Ihrem Controller, dann wird es von Ajax Anfrage ausgelöst werden, derzeit verwenden Sie nicht die richtige Namenskonvention in MVC.

Ihres

public class LayerProperty : ApiController 

Minen

public class LayerPropertyController : ApiController 
Verwandte Themen