Nick Van Tassell Ответов: 1

Как вызвать метод web api с помощью ajax


У меня есть следующий код:

$.Аякс({
тип: "получить",
URL-адрес: 'http://localhost:51914/PlayerPortal/User/Test',
}). done (функция (данные) {
самостоятельно.пользователей(данные.имя пользователя);
// Кэшируйте маркер доступа в хранилище сеансов.
sessionStorage. setItem(tokenKey, data. access_token);
}). fail(showError);

Когда я нажимаю CTRL+click на url выше, вызов работает.
Но когда я запускаю его через веб-страницу, Я получаю
статус: 0
statusText: ошибка

Как мне это отладить? Что может быть не так?
Извините, я очень новичок в этом деле.

Что я уже пробовал:

Я испробовал все, что мог.

Я могу создать Web API 2 в сочетании с MVC 5 в одном решении, но мне нужны отдельные решения для каждого. Я происхожу из фона WPF/WCF.

Я хочу, самостоятельное решение веб-API 2 и назвать ее из раствора самостоятельного проектирования MVC 5.
Просто, правда?

Pankaj Nikam

Находится ли приложение и api на одном и том же адресе?

F-ES Sitecore

Используйте вкладку Сеть инструментов отладки браузера, а также консоль ошибок браузера, чтобы увидеть, происходят ли какие-либо ошибки. Как уже упоминалось в другом комментарии, ajax-вызовы по умолчанию работают только с URL-адресами в том же домене, поэтому, если это не так, вы получите ошибку CORS, решение для которой хорошо документировано, поэтому google it.

Nick Van Tassell

Нет, это отдельные решения в отдельных веб-хостингах.

Nick Van Tassell

О да! Я помню, что читал о Корсе. Спасибо.
Разделяют ли большинство магазинов программного обеспечения свой код MVC и Web API на отдельные решения или объединяют их, как я видел пример по всему интернету?

В мире WPF/WCF мы разделяем эти проблемы, поскольку CORS не является проблемой.

Nick Van Tassell

Будет ли это являться коров? Я не думаю, что это будет так, так как они оба являются локальными хостами, но разными портами:

Приложение Web API: http://localhost:51914/PlayerPortal/User/Test
Приложение MVC: http://localhost:44305/

Pankaj Nikam

Я подумал об этом и догадался, что это, должно быть, связано с Корсом. Хотя не уверен.

F-ES Sitecore

Да, это CORS, так как порт является частью URI домена. Если бы браузеры разрешали, я мог бы разместить сайт на том же общем сервере, что и ваш сайт, только на другом порту, и иметь функции вызова моего сайта на вашем сайте и наоборот.

F-ES Sitecore

До тех пор, пока вы управляете сайтом web api, это простой случай настройки его так, чтобы позволить вашему интерфейсному сайту получить доступ к его методам, это легко сделать и не проблема, любой, кто разделяет свои API на другой сервер\домен, должен сделать это. Это проблема только тогда, когда вы не контролируете сервер вызываемого вами api, но хотите вызвать его методы, однако в этом случае вы делаете что-то, чего сервер не хочет, чтобы вы делали, и именно поэтому CORS существует в первую очередь.

1 Ответов

Рейтинг:
0

Nick Van Tassell

Это связано с CORS: происхождение определяется 1) хостом, 2) портом и 3) протоколом
Я думаю, что сделаю все это в одном приложении,как я видел везде.