JSON yanıt null, ancak URL doğru yankılanır

2 Cevap php

Ben birden fazla form ile bir sayfa üzerinde jQuery tarafından AJAX'd olan bir form var. Ben $.ajax fonksiyonu için bir sarıcı aşağıdaki işlevi, performans ediyorum:

function do_json_get(uri){
    var ret = '';
    var url = AJAX_URL + uri;

    $.ajax({
        type: 'GET',
        url: url,
        async: false,
        success: function(data) {
            ret = data.html;
        },
        dataType: 'json'
    });

    return ret;
}

Ben (PHP formu render edilir) doğrudan AJAX sunucuya gidin, ben çiğ JSON yanıt olsun - bu yüzden sunucu tarayıcıya çıktısı olduğunu biliyorum, ve AJAX sunucu uygun çerezleri ayarlaması gibi başka şeyler yapıyor, bu yüzden bağlantı (bir 200 yanıt kodu almak) iyi olduğunu biliyoruz. Oysa data nesne geri boş geliyor.

2 Cevap

İşte bir tahmin. Eğer dosya sistemi, Firefox (ve Chrome'u think) sayfa hizmet ediyorsanız, farklı bir etki alanından kaynaklı olarak göreceksiniz. Sen 200 yanıtı, ancak hiçbir veri alırsınız.

Safari dene, ya da belki yerine jsonp denemek json.

EDIT:

Eğer farklı bir etki verileri alıyoruz yana, bu iş olmaz. Ben XMLHTTPRequest tarafından izin verilmiyor düşünüyorum.

Oh boy. Bu soru yine.

AJAX: Asynchronous JavaScript ve XML *. Asenkron. Asenkron. Asenkron.

Sizin fonksiyonu, AJAX çağrısı success işleyicisi işlevi önce do_json_get() döner ret yürütür. Işlem sırası, yukarıdan aşağıya doğru, burada, devam edilmez. Diğer bir deyişle, you just can't do it that way.

Çünkü asenkron doğa, AJAX geri aramalar üzerinde çalışır, değer döndürmüyor. Sen paradigmayı değiştirmek gerekir. success işleyicisi işlevi data.html kendisi ile ne gerekiyorsa yapın, ya da başka bir işlev için onu geçmek gerekiyor.

* Yes, I know the XML part of the original acronym is largely vestigial these days