Pergunta

Estou usando o upload com o jQuery 1.4 para fazer upload de imagens. No script PHP que carrega os arquivos, imprimimos o seguinte:

$json_response['status'] = "true";
$json_response['file'] = $_FILES;
echo Zend_Json_Encoder::encode($json_response);

Em JavaScript, fazemos (em resumo):

$('#images_upload_file').uploadify({

    onComplete: function(event, queueID, fileObj, response, data) {

            console.log("upload complete");
            console.log(response);

A "resposta" está sempre vazia, não importa o quê. Evento, Queueid, FileObj e dados estão todos preenchidos corretamente. Alguém sabe como consertar isso?

Deixe -me saber se precisar de mais informações. PS: Nosso código carrega imagens muito bem, apenas a resposta está vazia o tempo todo, pois atualizamos para o jQuery 1.4

Foi útil?

Solução

Eu sempre uso json2.js Para processar quaisquer dados JSON. Esta biblioteca possui mecanismo de segurança, caso os dados não estejam no formato JSON adequado. Você pode obter de http://json.org, certifique -se de baixar o arquivo JS, não usá -lo diretamente no site deles.

Meu código sempre se parece com o seguinte:

onComplete : function (event, queueID, fileObj, response, data) {
  //process response
  try {
    var r = JSON.parse(response);
    //process the JSON data, ex
    console.log(r.status); 
  }
  catch(e) {
    //not json or bad format, do something about it
    alert("cannot parse data as json!");
  }
}

A razão pela qual eu uso json2.js é porque meu script PHP tem verificação da sessão e redirecionará se a sessão não for aceita. Isso é feito antes de inserir a página, usando o módulo de filtro, para que não possa verificar se é uma solicitação AJAX ou acesso normal à página. Se a sessão necessária não estiver satisfeita com a regra da página, ela será redirecionada imediatamente, para que retorne uma página da web completa.

Isso fará com que a resposta não esteja no formato JSON válido. Usando json2.js Eu posso lidar com isso em catch Bloqueie, depois faça outra ação, recarregando a página atual, por exemplo. Isso é apenas algo que eu sempre uso e sempre trabalhando para mim.

PARA SUA INFORMAÇÃO, json2.js não requer e não está relacionado ao jQuery.

Outras dicas

Error_Reporting está ativado no script PHP?

Poderia ser um erro fatal (por exemplo, porque não pode carregar a classe zend_json_encoder) que não é emitida devido ao error_reporting contexto?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top