2010-01-16 4 views
1

J'utilise uploadify avec jquery 1.4 pour télécharger des images. Dans le script php qui télécharge les fichiers que nous imprimons ceci:uploadify + jQuery 1.4 réponse est vide après uploadComplete

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

En javascript nous (en bref):

$('#images_upload_file').uploadify({ 

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

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

la "réponse" est toujours vide, peu importe quoi. L'événement, l'ID de la file d'attente, le fichierObj et les données sont tous remplis correctement. Est-ce que quelqu'un sait comment réparer ceci? Faites-moi savoir si vous avez besoin de plus d'informations.

PS: nos ajouts de code images très bien, juste la réponse est vide tout le temps depuis que nous avons surclassé dans JQuery 1.4

+0

Une raison particulière pour que vous en utilisant 'Zend_Json_Encoder :: encode' au lieu de construire en fonction' json_encode'? Je n'ai aucun problème en utilisant 'json_encode' avec uploadify. Essayez également d'imprimer 'response.status' et' response.file' à 'console.log' à la place. –

+0

utilisez-vous jquery 1.4? – Jorre

+0

J'utilise toujours 1.3.2. Pour gérer json, j'utilise toujours json2.js depuis http://json.org. Je posterai mon code ci-dessous. –

Répondre

1

J'utilise toujours json2.js pour traiter les données JSON. Cette bibliothèque dispose d'un mécanisme de sécurité dans le cas où les données ne sont pas dans le bon format json. Vous pouvez l'obtenir à partir de http://json.org, assurez-vous de télécharger le fichier js, ne pas l'utiliser directement à partir de leur site.

Mon code ressemble toujours comme ça:

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!"); 
    } 
} 

La raison pour laquelle j'utilise json2.js est parce que mon script php ont le contrôle de session et redirigera si la session est pas acceptée. C'est fait avant d'entrer dans la page, en utilisant le module de filtre, donc je ne peux pas vérifier si c'est une requête AJAX, ou un accès normal à une page. Si la session requise n'est pas satisfaite par la règle de la page, elle sera redirigée immédiatement, de sorte qu'elle renverra une page Web complète.

Cela fera la réponse est pas le bon format JSON. En utilisant json2.js je peux le gérer dans le bloc catch, puis faire une autre action, en rechargeant la page actuelle par exemple. C'est juste quelque chose que j'utilise toujours et qui travaille toujours pour moi.

Pour votre information, json2.js pas besoin et non lié avec jQuery du tout.

+0

merci cette réponse est géniale. Il corrige le problème d'analyse json, bien que ce soit un problème de téléchargement, puisque nous n'avons jamais eu besoin d'utiliser json class avec jQuery. Il y en a un mais: Safari se bloque/se ferme automatiquement après le téléchargement d'un fichier ... Est-ce que cela fonctionne avec vous en safari? – Jorre

+0

une autre remarque: Internet Explorer 7 affiche votre alerte lors de l'analyse du JSON, il fonctionne dans FF et Safari et Chrome, mais pas IE ... aucune idée sur ce point? – Jorre

+0

Eh bien, j'utilise linux, donc je vérifie seulement mon code dans Firefox et Google Chrome. Je n'ai jamais eu de problèmes dans les deux cas. IE toujours PITA à gérer. Avez-vous utilisé le dernier téléchargement? Peut-être que c'est le bug dans uploadify ou safari. Pour IE, si cela ne dépend que de moi, je préférerais afficher une image splash pour dire à l'utilisateur d'utiliser un navigateur moderne :). Peut-être que vous pouvez utiliser Firebug Lite pour suivre les problèmes dans IE. –

0

est-error_reporting activée dans le script PHP?

Pourrait-elle être une erreur fatale (par exemple, parce qu'elle ne peut pas charger la classe Zend_Json_Encoder) qui n'est pas sortie en raison du paramètre error_reporting?

+0

Salut Pekka, ce n'est pas une erreur fatale. Nous utilisons json_encoder dans toute notre application et cela fonctionne très bien. – Jorre