2010-11-12 3 views
2

J'utilise ce script d'upload de fichier ajax, et tout fonctionne bien dans Firefox http://valums.com/ajax-upload/Comment retourner correctement JSON à IE8 de script ajax php

Mais il ne fonctionne pas dans IE8.

EDIT: Ok, j'ai réduit le problème. Dans mon php réponse ajax Je le fais

$result['table_1']='<b>text</b>'; 
echo json_encode($result); 

Le résultat que je vois dans les outils de développement IE ressemble à ce

JOURNAL : [uploader] innerHTML = {"table_1":"<B>text&lt;\/b&gt;"}</B> 

La fin de la html intérieure se est foiré, et le JSON a obtenu foiré avec la balise de fin correcte se terminant en quelque sorte en dehors du json ??

J'utilise php 5.2

+1

Les citations ne correspondent pas . Voir 'labelrow' et' label' – stillstanding

Répondre

0

Ok, j'ai trouvé une solution qui fonctionne. Cette bibliothèque fonctionne grâce à un iframe, pour ainsi revenir texte comme

$result='<b id="1">text</b>'; 

Je dois encoder manuellement et décoder le «moi-même parce qu'ils se sont trompés dans le iframe. Ainsi, le php finale ressemble à ceci

$result['table_1']=htmlentities(str_replace('"','|',getRowHTML())); 
echo json_encode($result); 

et puis de décoder manuellement dans le javascript ressemble à ceci

function(id, fileName, responseJSON) 
    { 
     $('#table_1 tbody').html 
     (
     //this line decodes responseJSON.table_1 
     $("<div/>").html(responseJSON.table_1.replace(/\|/g,'"')).text() 
    ); 
    } 
2

Vous devriez essayer de valider votre réponse JSON avec JSONLint. D'autre part, si vous avez PHP> = 5.3.0, vous pouvez utiliser json_last_error() pour vérifier ce qui provoque l'échec de PHP sur le processus d'encodage.

1

J'ai eu un problème similaire avec Invalid JSON: {"text":"<H2>Update Complete&lt;\/H2&gt;"}</H2>-à-dire et résolu en en utilisant http://www.captain.at/howto-php-urlencode-javascript-decodeURIComponent.php (ce site n'est la programmation plus je trouve une fonction similaire ici What is the equivalent of JavaScript's encodeURIcomponent in PHP?) sur le côté PHP

$response->text .= encodeURIComponent("<H2 class='action_result'>Update Complete.</H2>"); 
return json_encode($response);  

et dans les js je

function showResponse(responseText, statusText, xhr, $form) { 
var response = jQuery.parseJSON (responseText); 
$('#ajax_form_response')[0].innerHTML = decodeURIComponent(response.text); 
} 
Questions connexes