Bir AJAX isteği birden yanıtları

5 Cevap php

Gerçekten sadece kavramlar, burada kod örnekleri aramıyorum.

Ben üç ayrı AJAX JSON dönmek PHP, çağrılar aracılığıyla güncellenmektedir artık bir sayfada üç bölüm var. Ne bir büyük çağrı içine bu üç çağrı yoğunlaşmasına ve JSON istemci üzerinde yanıtları geri almak için en kolay yol olurdu? Nasıl istemci üzerinde tepkiler yüzden hangi bilgileri dayalı yanıt verileri geri gönderilir işleyebilirsiniz ayırmak istiyorsunuz?

5 Cevap

Ben Cris'in yöntem gibi, ama biraz iyileşme sağlayabilir düşünüyorum. Zaten her şeyi Recoding için ihtiyacını azaltmak için 3 ayrı varlıklar var gibi, size include 'page.php' üzerinden bir dosya içine PHP birleştirerek ve ne için adlandırılmış özellikleri ile json ile geri bir nesne gönderme çizgisinde bir şey yapabileceğini Bunların her biri ("isimler", "tarih", ve "fuzzyThings" diyelim) yok. Isteği göndermek için istemci kod sonra sadece 3 fonksiyonları tek bir istek gönderilen ayrı ayrı gönderilen tüm argümanları olurdu. Döndürülen JSON sonra böyle bir şey (sizin nesneler / diziler / yorumladı alanlarda ne koymak) görünecektir:

{
    "names" : {/*stuff needed for names goes in here*/},
    "dates" : {/*stuff needed for dates goes in here*/},
    "fuzzyThings" : {/*all fuzzy things goes in here*/}
}

Her zaten dönüş veri ile başa çıkmak için bir fonksiyon (veya fonksiyonların kümesi) olabilir varsayalım gibi, istemci tarafında bu olsun, bu şekilde onları aramak gerekir:

function handler(retText) {
    var returnedObject = eval(retText);

    doStuffWithNames(returnedObject.names);
    doStuffWithDates(returnedObject.dates);
    playWithFuzzyThings(returnedObject.fuzzyThings);
}

: Ayrıca, PHP ucunda Eğer üzerinden (umarım bir şey Recoding olmadan) birleşik bir PHP sayfası yapabilirsiniz

<?php
    echo '{';
        echo '"names":{';
        include 'names.php';
        echo '},';

        echo '"dates":{';
        include 'dates.php';
        echo '},';

        echo '"fuzzyThings":{';
        include 'fuzzyThings.php';
        echo '}';
    echo '}';
?>

Onlar doğru $ _POST kontrol edecek ve size değil zaten varsa diğer sayfaların işlevselliği ile müdahale olmadan, ben {[(1 yöntemini tercih ettiklerini böylece Note: Sen 3 php sayfaları düzenlemek gerekebilir )]} her şey doğru gönderilip kontrol etmek için, bu şekilde, istediğiniz kadar dahil edebilir ve (yani o, olur) bu sayfada bu bölümü kullanarak değil bir php dosyası ile ilgisi olup olmadığını boş bir özellik dönmek ve sadece (temelde şey bir "tek beden herkese uyar" tipi yapma) kullanmak olmaz.

O senin için çalıştığını umuyoruz!

Bu gibi JSON biçimlendirebilirsiniz:

"user" : [ {
    "name" : "Harry",
    "hobby" : "Skating"
}, {
    "name" : "Dave",
    "hobby" : "Scuba Diving"
} ],
"news" : [ {
    "date" : "3/13/05",
    "title" : "Blah",
    "postedby" : "Mike",
} ]

Ve şimdi AJAX yanıt:

var data = eval('('+ xhr.responseText +')'); // Ajax response
var user = data.user[0].name; // Harry
var user2 = data.user[1].name; // Dave
var title = data.news[0].title;

Sen verilerinde geçiş için bir for döngüsü kullanabilirsiniz. Yukarıdaki örnekte şimdi birden fazla kategoride (kullanıcı, haber, vb.) Ile JSON format ve tek bir çağrı ile herşeyi geri dönmek için PHP nasıl kullanılacağını görmek gerekir. Eğer daha ayrıntılı bir örnek isterseniz this makalenin yanı sıra lütfen this.

Ben yanıttan sonra bu bölümlere onları doldurmak böylece sayfasında, kimliği onları üzerinde bu 3 bölümlere göre JSON formatı yapmak zorunda düşünüyorum.

Ben şahsen json yöntemi gibi ama json veya jQuery Taconite Plugin adlandırılan bu amaç için özel olarak tasarlanmış bir jQuery eklentisi var herhangi bir nedenden dolayı onunla rahat çalışma hissetmiyorum yeni iseniz

Raylar toplumda o kadar sıcak bugünlerde değil ve biraz eskimiş hissediyor ama yine de kendi hayranları vardır RJS denilen üçüncü bir yolu var. Herkes PHP RJS taşıdık veya değil, merak ediyorum?

this is workimg for me
php code:

//for test
$categoryName = "category";
$idcategory = "1";

 $json = "{'productcategory':[{'categoryname':'".$categoryName."','idcategory':'".$idcategory."'}]}";           
 echo $json; 

javascript:

var str = xmlhttp.responseText.trim();
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json);
alert(obj.productcategory[0].idcategory);
alert(obj.productcategory[0].categoryname);