Carcione tarafından verilen cevabı kullandım ve JSON kullanmak için değiştirdim.
function getUrlJsonSync(url){
var jqxhr = $.ajax({
type: "GET",
url: url,
dataType: 'json',
cache: false,
async: false
});
// 'async' has to be 'false' for this to work
var response = {valid: jqxhr.statusText, data: jqxhr.responseJSON};
return response;
}
function testGetUrlJsonSync()
{
var reply = getUrlJsonSync("myurl");
if (reply.valid == 'OK')
{
console.dir(reply.data);
}
else
{
alert('not valid');
}
}
Eklediğim dataType ait 'JSON' ve değiştirilemez .responseText için responseJSON .
Ayrıca , döndürülen nesnenin statusText özelliğini kullanarak durumu aldım . Bunun JSON'un geçerli olup olmadığını değil, Ajax yanıtının durumu olduğunu unutmayın.
Arka uç yanıtı doğru (iyi biçimlendirilmiş) JSON olarak döndürmelidir, aksi takdirde döndürülen nesne tanımsız olur.
Orijinal soruyu cevaplarken dikkate alınması gereken iki husus vardır. Biri Ajax'a senkronize çalışmasını söylüyor (zaman uyumsuz: false ayarlayarak ) ve diğeri yanıtı geri arama işlevine değil, çağıran işlevin dönüş deyimi aracılığıyla döndürüyor.
Ayrıca POST ile denedim ve çalıştı.
GET'i POST olarak değiştirdim ve veri ekledim : postdata
function postUrlJsonSync(url, postdata){
var jqxhr = $.ajax({
type: "POST",
url: url,
data: postdata,
dataType: 'json',
cache: false,
async: false
});
// 'async' has to be 'false' for this to work
var response = {valid: jqxhr.statusText, data: jqxhr.responseJSON};
return response;
}
Yukarıdaki kod yalnızca durumda çalıştığını Not zaman uyumsuz olduğu yanlış . Async: true ayarlayacak olsaydınız , döndürülen nesne jqxhr , AJAX çağrısı döndüğünde geçerli olmaz, ancak daha sonra eşzamansız çağrı bittiğinde, ancak yanıt değişkenini ayarlamak için çok geç olur .
beforecreate
.