Pergunta

Não é realmente à procura de exemplos de código aqui, apenas conceitos.

Eu tenho três seções em uma página, agora que estão a ser actualizados através de três chamadas AJAX separados para scripts PHP, que retornam JSON. Qual seria a maneira mais fácil de condensar estas três chamadas em uma chamada maior e receber as respostas de volta no cliente em JSON? Como eu iria separar as respostas no cliente para que eu possa manipular os dados de resposta com base no que a informação é enviada de volta?

Foi útil?

Solução

Eu como método Cris', mas acho que pode proporcionar um pouco de melhoria. Como você já tem 3 entidades separadas, para reduzir a necessidade de recodificação tudo, você poderia fazer algo ao longo das linhas de combinar você PHP em um arquivo via include 'page.php' e enviar um objeto de volta através de JSON com propriedades nomeadas para o que cada um deles faz (deixa dizer "nomes", "datas", e "fuzzyThings"). O seu código de cliente para enviar o pedido, então, simplesmente tem todos os argumentos seus 3 funções enviado individualmente sendo enviados em uma solicitação. O JSON voltou, então, algo parecido com isto (colocar seus objetos / matrizes / whatever nas áreas comentadas):

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

Uma vez que você chegar a este lado do cliente, como eu assumir cada já pode ter uma função (ou conjunto de funções) para lidar com ele de dados de retorno, você deve ser capaz de chamá-los desta maneira:

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

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

Além disso, no final PHP você pode fazer uma página PHP unificada (sem recodificar espero nada) via:

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

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

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

Nota: Você pode precisar editar as 3 páginas php para que eles vão verificar o $ _POST corretamente e sem interferir com a funcionalidade das outras páginas, se você não tiver, eu prefiro o método de if(isset($_POST['whatever'])) { ... } para verificar se tudo foi enviado corretamente, desta forma, você pode incluir como muitos como você quer, e se não há nada a ver com um arquivo php (ou seja, você não está usando essa seção nessa página), então ele irá retornar uma propriedade em branco, e você simplesmente não usá-lo (basicamente tornando-se um "one-size-fits-all" tipo de coisa).

Hope trabalha para ya!

Outras dicas

Você pode formatar o JSON como este:

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

E agora, em sua resposta AJAX:

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;

Você pode usar um loop for para percorrer os dados. No exemplo acima, você deve agora ver como você pode usar o PHP para formatar o JSON com várias categorias (usuários, notícias, ect.) E voltar tudo com apenas uma chamada. Se você gostaria de um exemplo mais elaborado consulte este artigo , bem como < a href = "http://www.devarticles.com/c/a/JavaScript/AJAX-with-JSON/1/" rel = "nofollow noreferrer"> este .

Eu acho que você tem que fazer um formato JSON de acordo com esses 3 seções na página, ID-los para que após a resposta que você pode preenchê-los a essas seções.

Eu, pessoalmente, como o método de json, mas se você é novo para JSON ou não se sente confortável trabalhando com ele por qualquer razão há um plugin jQuery projetado especificamente para este propósito chamado jQuery Taconite Plugin

Em Rails comunidade há uma terceira via chamada RJS, que não é muito quente hoje em dia e se sente um pouco obsoleto, mas ainda tem seus próprios fãs. Estou curioso para saber se alguém tem portado RJS para PHP ou não?

este é workimg para mim
código PHP:

//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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top