2010-11-10 6 views
3

sur IE7, je ne reçois pas une réponse en retour de mon POST:

function updateItem(item) { 
    $.post("updater.php",{key:item.id, value:item.value},function(response) { 
    $('#response').html(response); 
    }); 
} 

<div id="response"></div> 
<select id="PRIMARY_KEY" onchange="updateItem(this)"> 
    <option>1</option> 
    <option>2</option> 
</select> 

<?php 
    echo 'UPDATED KEY: ' . $_POST['key'] . ' TO: ' . $_POST['value']; 
?> 

Il fonctionne avec tous mes autres navigateurs. Pourquoi donc?

Edit: Dans un premier temps, je tentais de répondre this question.

+0

Êtes-vous sûr que vous ne recevez aucune réponse en retour? Que faire si vous mettez une alerte ("test") dans la fonction de réponse? –

Répondre

3

Essayez ceci: (2 modifications: value « s ... valeur et <option value="1">1</option>)

<script> 
    function updateItem(item) { 
    $.post("updater.php",{key:item.id, value:item.options[item.selectedIndex].value}, function(response) { 
    $('#response').html(response); }); 

} 
</script> 
<div id="response"></div> 
<select id="primary_key" onchange="updateItem(this)"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 

j'ai utilisé jsFiddle, IE7 et DebugBar pour trouver ceux-ci. http://jsfiddle.net/d3xk8/

+0

Cela a fait l'affaire. Bon à savoir, merci pour le lien. – arby

0

Habituellement, si je ne reçois pas de réponse de retour d'une fonction cela signifie que j'ai misformatted les données que je suis en train de passer. Je recommande de mettre des guillemets autour de la chaîne que vous écrivez et de voir si cela fonctionne.

+0

Je ne pense pas que l'ajout de guillemets doubles changerait l'énoncé. J'envoie juste une chaîne concaténée que je reçois sur d'autres navigateurs. – arby

+0

Je sais, mais parfois sur jQuery insiste guillemets doubles, en particulier dans les réponses de PHP. C'EST À DIRE. pourrait être plus difficile que les autres. – Belinda

+0

[Je ne pense pas que ce soit.] (Http://docs.jquery.com/Types#Quoting) Haha. =] – arby

1

Il y a erreur dans la mise innerHTML par jquery.

Utilisez document.getElementById("#response").innerHTML = response;