Используйте функцию callback()
внутри успеха foo()
. Попробуйте таким образом. Это просто и легко понять. & nbsp;
var lat = "";
var lon = "";
function callback(data) {
lat = data.lat;
lon = data.lon;
}
function getLoc() {
var url = "http://ip-api.com/json"
$.getJSON(url, function(data) {
callback(data);
});
}
getLoc();
Да, вам нужно добавить ссылку на
System.Net.Http.Formatting.dll
. Это можно найти в области сборки расширений.
Обратите внимание, что хорошим способом достижения этого является добавление пакет NuGet System.Net.Http.Formatting.Extension
для вашего проекта.
Вместо того, чтобы писать этот код для простого вызова, вы можете использовать одну из оберток, доступную через Интернет.
Я написал одно имя WebApiClient, доступное в NuGet ... check это [! g2]
Недопустимая ссылка - System.Net.Http.Formatting.dll
. Но лучшим решением является добавление пакета NuGet Microsoft.AspNet.WebApi.Client
, чтобы версия dll для форматирования работала с версией .NET framework System.Net.Http
в моем проекте.
Как уже debatted, этот метод больше не доступен с .NET 4.5.2. Чтобы расширить ответ Jeroen K , вы можете сделать метод расширения:
public static async Task<HttpResponseMessage> PostAsJsonAsync<TModel>(this HttpClient client, string requestUrl, TModel model)
{
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(model);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
return await client.PostAsync(requestUrl, stringContent);
}
Теперь вы можете вызвать client.PostAsJsonAsync("api/AgentCollection", user)
.
PostAsJsonAsync
больше не находится в System.Net.Http.dll
(.NET 4.5.2). Вы можете добавить ссылку на System.Net.Http.Formatting.dll
, но это действительно относится к более старой версии. Я столкнулся с проблемами на этом сервере сборки TeamCity, эти два не будут взаимодействовать друг с другом.
В качестве альтернативы вы можете заменить PostAsJsonAsync
на вызов PostAsync
, который является частью новой dll. Замените
var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;
С помощью:
var response = client.PostAsync("api/AgentCollection", new StringContent(
new JavaScriptSerializer().Serialize(user), Encoding.UTF8, "application/json")).Result;
См. https://code.msdn.microsoft.com/windowsapps/How-to-use-HttpClient-to -b9289836
У меня тоже была проблема с проектом, который я только что проверил из исходного управления.
Симптом был описанной выше ошибкой и желтым предупреждающим треугольником на ссылке на System.Net.Http.Formatting
Чтобы исправить это, я удалил неработающую ссылку, а затем использовал NuGet для установки последней версии Microsoft.AspNet.WebApi.Client
.
Я знаю, что этот ответ слишком поздний, у меня была та же проблема, и я добавлял Nuget System.Net.Http.Formatting.Extension
, после проверки здесь и там я обнаружил, что Nuget добавлен, но System.Net.Http.Formatting.dll
не был добавлен в ссылки, Я просто переустановил Nuget