2015-11-13 3 views
0

У меня есть класс с именем сервера в папку с названием модели прямо под моим проектом (решение -> проект -> Модели -> Server.cs)вызова сервера метод сторона не работает 404 не нашел

У меня есть простая кнопка , и когда я нажимаю, я хочу позвонить своему методу на стороне сервера и получить возвращаемую строку.

Я получаю ошибку 404 (не найден). Я пытался несколько различных URL: s, но это, похоже, не будет работать ..

index.html:

<body> 
<h1>Weeelcome</h1> 

<button type="button" id="btnName" style="width: 100px; height: 50px;">Get My Name</button> 
<p ID="lblTest"></p> 
</body> 

Мои ЯШ:

$(document).ready(function() { 
$("#btnName").click(function() { 
    $.ajax({ 
     url: "../../Models/GetMyName", 
     type: "GET", 
     success: function (result) { 
      alert(result); 
     }, 
     error: function (ex) { 
      //alert("Error"); 
     } 
    }); 
}); 
}); 

Server.cs

public class Server 
{ 
    [WebMethod] 
    public static string GetMyName() 
    { 
     return "MyName"; 
    } 
} 

Ошибка

ПОЛУЧИТЬ http://localhost:50603/Models/GetMyName 404 (Не найдено)

+0

Является 'HTTP: // локальный: 50603/Модели/GetMyName' правой URL для вашей стороне сервера файл? Попробуйте открыть его в браузере – void

+0

@void хорошо. Я считаю, что это случай. Я не знаю, как указать правильный URL-адрес файла. Как я могу получить правильный URL-адрес? – MrProgram

+0

Попробуйте проверить разные комбинации в браузере, если вы сбиты с толку. – void

ответ

1

Это не ясно из вашего вопроса, что вы используете ASP.NET MVC? потому что в этом случае index.html должен быть index.cshtml

Во-вторых, я считаю, что вы пытаетесь получить доступ к модели не контроллера, если используете asp.net mvc. Вы предоставляете неправильный путь (используя путь к файлу или местоположению), тогда как вам необходимо указать Путь сервера/путь Server.cs/Путь к действию.

третьей ошибкой является не статический класс server.cs оказывает статическую функцию:

В-четвертых, если вы используете веб-службы (ASMX) за сценой и используя HTML-страницу, чтобы общаться с помощью веб-службы, то решение будет упомянуто ниже:

Вам необходимо объявить его методом GetMyName в Server.cs для получения или задания значения, указывающего, следует ли вызывать метод с помощью HTTP GET.

[WebMethod] 
    [ScriptMethod(UseHttpGet = true)] 

Ссылка: https://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.usehttpget(v=vs.110).aspx

Я не мог проверить этот код, но я считаю, что это будет работать для вас

index.html

<head> 
<script> 
    var __appBasePath = 'http://yourserver.com/'; 
<script> 
</head> 
<body> 
<h1>Weeelcome</h1> 

<button type="button" id="btnName" style="width: 100px; height: 50px;">Get My Name</button> 
<p ID="lblTest"></p> 
</body> 

Ваш JS

$(document).ready(function() { 
$("#btnName").click(function() { 
    $.ajax({ 
     url: __appBasePath + "Server/GetMyName", 
     type: "GET", 
     success: function (result) { 
      alert(result); 
     }, 
     error: function (ex) { 
      //alert("Error"); 
     } 
    }); 
    }); 
}); 

Ваш Server.cs (Если это веб-службы) Примечание: не статический класс не может иметь статический метод: так удалить статический

public class Server 
{ 
    [WebMethod] 
    [ScriptMethod(UseHttpGet = true)] 
    public string GetMyName() 
    { 
     return "MyName"; 
    } 
} 

Если вы используете ASP.NET MVC Controller или Web API:

Если вы используете asp.net MVC, то что вы делаете неправильно, вы пытаетесь вызвать функцию, которую вы определили в модели. как я вижу, вы упомянули (решение -> проект -> Модели -> Сервер.cs) Если вы используете ASP.NET MVC/Web API, просто используйте [HttpGET] в контроллере action.i.e.

Model.cs

public class ServerModel 
{ 
    public string GetMyName() 
    { 
     return "MyName"; 
    } 
} 

В случае MVC контроллер:

public class ServerController : Controller 
{ 
    public JsonResult GetMyName() 
    { 
     ServerModel model = new ServerModel(); 
     var name = model.GetMyName; 
     return Json(name, JsonRequestBehavior.AllowGet); 
    } 
} 

Вам нужно только заменить контроллер для ApiController в классе ServerController в случае, если вы используете Asp. net mvc web apis.

В случае WebAPI Заменить:

public class ServerController : Controller 

с

public class ServerController : ApiController 
+0

Привет, Извините, если я не был ясен, но я думал, что моих тегов будет достаточно. Я не использую MVC. Я просто использую обычную html-страницу (не aspx). Я попробую это сейчас. – MrProgram

Смежные вопросы