Michael
Michael

Reputation: 13616

why ajax call not succeed?

I create this ajax function:

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

        }
    });
}

And here is my web api class:

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

Whenever ajax function fired I get this error:

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

Update

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

What is wrong with my code?why ajax call not succeed?

Upvotes: 0

Views: 72

Answers (4)

Shahzad Khan
Shahzad Khan

Reputation: 530

Use the controller name with your controller then it will fire from ajax request, currently you're not using the right naming convention in mvc.

Your's

public class LayerProperty : ApiController

Mine

public class LayerPropertyController : ApiController 

Upvotes: 0

Nikunj Patel
Nikunj Patel

Reputation: 247

Can you please change your method with below piece of code ?

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

Upvotes: 0

Milney
Milney

Reputation: 6417

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

        }
    });
}

Upvotes: 2

Roman Kiyashev
Roman Kiyashev

Reputation: 160

you have error in 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 () {

        }
    });
}

Upvotes: -1

Related Questions