Я думаю, что это то, что вы ищете:
var tasks = new Task[3];
tasks[0] = GetFirstListFilesAsync();
tasks[1] = GetSecondListFilesAsync();
tasks[2] = GetThirdListFilesAsync();
// At this point, all three tasks are running at the same time.
// Now, we await them all.
await Task.WhenAll(tasks);
// Get an individual result, where result is MyMethodReturnObject
var myText = tasks[0].Result;
// Loop through results
var results = tasks.Select(o => o.Result).ToList();
foreach (var result in results)
{
Console.Write(result);
}
Источник: http://blog.stephencleary.com/2012/02/async-and-await.html
Вы передаете объект, , а не строку JSON. Когда вы передаете объект, jQuery использует $.param
для сериализации объекта в пары имя-значение.
Если вы передадите данные в виде строки, это не будет сериализовано :
$.ajax({
type: 'POST',
url: '/form/',
data: '{"name":"jonas"}', // or JSON.stringify ({name: 'jonas'}),
success: function(data) { alert('data: ' + data); },
contentType: "application/json",
dataType: 'json'
});
Главный ответ работал нормально, но я предлагаю сохранить ваши данные JSON в переменную, прежде чем публиковать ее, немного чище при отправке длинной формы или работе с большими данными в целом.
var Data = {
"name":"jonsa",
"e-mail":"qwerty@gmail.com",
"phone":1223456789
};
$.ajax({
type: 'POST',
url: '/form/',
data: Data,
success: function(data) { alert('data: ' + data); },
contentType: "application/json",
dataType: 'json'
});
Я попробовал решение Ninh Pham, но это не сработало для меня, пока я не изменил его - см. ниже. Удалить contentType и не кодировать данные json
$.fn.postJSON = function(url, data) {
return $.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json'
});
Используя Promise
и проверяя, является ли объект body
действительным JSON. Если не будет получено обещание reject
.
var DoPost = function(url, body) {
try {
body = JSON.stringify(body);
} catch (error) {
return reject(error);
}
return new Promise((resolve, reject) => {
$.ajax({
type: 'POST',
url: url,
data: body,
contentType: "application/json",
dataType: 'json'
})
.done(function(data) {
return resolve(data);
})
.fail(function(error) {
console.error(error);
return reject(error);
})
.always(function() {
// called after done or fail
});
});
}
Основываясь на ответе lonesomeday, я создаю jpost
, который обертывает определенные параметры.
$.extend({
jpost: function(url, body) {
return $.ajax({
type: 'POST',
url: url,
data: JSON.stringify(body),
contentType: "application/json",
dataType: 'json'
});
}
});
Использование:
$.jpost('/form/', { name: 'Jonh' }).then(res => {
console.log(res);
});
$.post
для этого? Это (a) только оболочка для$.ajax
и (b) неспособна выполнить то, что здесь требуется (т. Е. СвойствоcontentType
). – lonesomeday 27 July 2015 в 17:15