رفع خطای GET http://localhost:1171/api/DrawChart 404 (Not Found)
سلام دوستان عزیزم خسته نباشید ، رفع خطای jquery-2.0.3.min.js:6 GET http://localhost:1171apiDrawChart 404 (Not Found)
مسیر فایل چه طور باید تغییر بکنه تا error نده؟
سورس کد :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Product App</title>
</head>
<body>
<div>
<h2>All Products</h2>
<ul id="products" />
</div>
<div>
<h2>Search by ID</h2>
<input type="text" id="prodId" size="5" />
<input type="button" value="Search" onclick="find();" />
<p id="product" />
</div>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
var uri = 'api/DrawChart';
$(document).ready(function () {
// Send an AJAX request
$.getJSON(uri)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
function formatItem(item) {
return item.Name + ': $' + item.Price;
}
function find() {
var id = $('#prodId').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
$('#product').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
</script>
</body>
</html>
این مسیر فایل ها :
#خطای_404 #ای_اس_پی_دات_نت
16 پاسخ
احتمالاً آدرس Api ای که دارید استفاده می کنید اشتباهه، تو قسمت route نگاه کنید ببینید route درست تعریف شده یا نه.
بازم خطا میده :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Product App</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
</head>
<body>
<div>
<h2>All Products</h2>
<ul id="products" />
</div>
<div>
<h2>Search by ID</h2>
<input type="text" id="prodId" size="5" />
<input type="button" value="Search" onclick="find();" />
<p id="product" />
</div>
<script>
var uri = 'api/DrawChart';
$(document).ready(function () {
// Send an AJAX request
$.getJSON(uri)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
function formatItem(item) {
return item.Name + ': $' + item.Price;
}
function find() {
var id = $('#prodId').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
$('#product').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
</script>
</body>
</html>
به صورت دستی آدرس api رو فراخونی کردید ببینید مقداری برمیگردونه یا نه؟
بر اساس route تعریف شده، آدرس api شما باید به صورت زیر نوشته بشه:
/drawchart/getallproducts
یعنی تو آدرسی که می نویسید باید نام کنترلر و اکشن حتماً ذکر بشه
کد کنترلر رو هم لطف کنید بزارید.
بازم خطا میده .
این خط رو اصلاح کردم
var uri = '/DrawChart/GetProduct';
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Product App</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
</head>
<body>
<div>
<h2>All Products</h2>
<ul id="products" />
</div>
<div>
<h2>Search by ID</h2>
<input type="text" id="prodId" size="5" />
<input type="button" value="Search" onclick="find();" />
<p id="product" />
</div>
<script>
var uri = '/DrawChart/GetProduct';
$(document).ready(function () {
// Send an AJAX request
$.getJSON(uri)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
function formatItem(item) {
return item.Name + ': $' + item.Price;
}
function find() {
var id = $('#prodId').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
$('#product').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
</script>
</body>
</html>
اینم عکس :
این آدرس رو باید جای این خط بزارم؟
var uri = '/drawchart/getallproducts';
دوست عزیز، شما باید اکشن مناسب رو فراخونی کنید، شما الان دارید IP پاس میدید پس متد getallproducts مورد نظر شما نیست و باید از getproduct استفاده کنید.
جای تگ
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
رو بزار تو تو <head > نه تگ <body>
این دفعه هم نام کنترلر و هم نام اکشن رو گذاشتم ولی درست نشد
منظورم این خط کد هست :
var uri = '/drawchart/getallproducts';
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Product App</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
</head>
<body>
<div>
<h2>All Products</h2>
<ul id="products" />
</div>
<div>
<h2>Search by ID</h2>
<input type="text" id="prodId" size="5" />
<input type="button" value="Search" onclick="find();" />
<p id="product" />
</div>
<script>
var uri = '/drawchart/getallproducts';
$(document).ready(function () {
// Send an AJAX request
$.getJSON(uri)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
function formatItem(item) {
return item.Name + ': $' + item.Price;
}
function find() {
var id = $('#prodId').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
$('#product').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
</script>
</body>
</html>
دوست عزیز، پروژه Api تون رو اجرا کنید، بعد یه آدرسی میده بهتون، مثلاً localhost:1171، بعد آدرس api رو در ادامه همون آدرس ای که نوشته شده قرار بدید، مثلاً:
http://localhost:1171/drawchart/getproduct/1
نه نزدم چه جوری باید این کارو بکنم؟
این آدرس مرورگر منه :http://localhost:1171/HTMLPage1.html
این آدرس route :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace AdminRtl
{
public class 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 }
);
}
}
}
آدرس api باید جایی که درخواست رو ارسال می کنید قرار بدید.
چیزی بر نمی گردونه ، حالا باید چی کار کنم؟
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Routing;
using AdminRtl.Models;
namespace AdminRtl.Controllers
{
public class DrawChartController : ApiController
{
//protected void Application_Start()
//{
// GlobalConfiguration.Configure(WebApiConfig.Register);
//}
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
public IEnumerable<Product> GetAllProducts()
{
return products;
}
public IHttpActionResult GetProduct(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
}