J'ai une fonction php qui insère une barre de recherche dans chaque page d'un site web.
Le site vérifie si l'utilisateur a javascript activé et s'il le fait, insère des ajouts jquery ajax pour lier des cases de sélection (au lieu d'utiliser fallback onchange = "form.submit()"). $ .getJSON fonctionne parfaitement pour moi dans d'autres navigateurs sauf dans IE, si je fais une actualisation complète de la page (ctrl + F5) dans IE mon ajax fonctionne parfaitement jusqu'à ce que je navigue vers une nouvelle page (ou la même page avec $ PHP_SELF) soit par submiting la forme ou en cliquant sur un lien de la jquery onchange feux de fonction mais jquery jette une erreur:
détails de l'erreur de page Web
Message: Object doesn't support this property or method
Line: 123
Char: 183
Code: 0
URI: http://~#UNABLE~TO~DISCLOSE#~/jquery-1.4.2.min.js
Il semble que la fonction jquery .getJSON de $() est disparu???
Cela semble être une sorte de problème de mise en cache comme il arrive sur la deuxième chargement de la page, mais je crois que j'aller à la prévention de la mise en cache en place de toute façon, voici un snipet du code que les annonces les fonctions jquery:
if (isset($_SESSION['NO_SCRIPT']) == true && $_SESSION['NO_SCRIPT'] == false)
{
$html .= '<script type="text/javascript" charset="utf-8">';
$html .= '$.ajaxSetup({ cache: false });';
$html .= '$.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
}});';
$html .= '</script>';
$html .= '<script type="text/javascript" charset="utf-8">';
$html .= '$(function(){ $("select#searchtype").change(function() { ';
$html .= 'alert("change fired!"); ';
$html .= '$.getJSON("ajaxgetcategories.php", {id: $(this).val()}, function(j) { ';
$html .= 'alert("ajax returned!"); ';
$html .= 'var options = \'\'; ';
$html .= 'options += \'<option value="0" >--\' + j[0].all + \'--</option>\'; ';
$html .= 'for (var i = 0; i < j.length; i++) { options += \'<option value="\' + j[i].id + \'">\' + j[i].name + \'</option>\'; } ';
$html .= '$("select#searchcategory").html(options); }) }) }) ';
$html .= '</script> ';
$html .= '<script type="text/javascript" charset="utf-8"> ';
$html .= '$(function(){ $("select#searchregion").change(function() { ';
$html .= 'alert("change fired!"); ';
$html .= '$.getJSON("ajaxgetcountries.php", {id: $(this).val()}, function(j) { ';
$html .= 'alert("ajax returned!"); ';
$html .= 'var options = \'\'; ';
$html .= 'options += \'<option value="0" >--\' + j[0].all + \'--</option>\'; ';
$html .= 'for (var i = 0; i < j.length; i++) { options += \'<option value="\' + j[i].id + \'">\' + j[i].name + \'</option>\'; } ';
$html .= '$("select#searchcountry").html(options); }) }) }) ';
$html .= '</script> ';
}; return $html;
rappelez-vous, cela fait partie d'une fonction php qui insère un script dans le code html et désolé si cela semble un peu en désordre, je suis nouveau à PHP et Javascript et je suis un peu en désordre aussi :)
S'il vous plaît rappelez-vous également que cela fonctionne parfaitement dans IE sur la première visite, mais après toute navigation, je reçois l'erreur.
Vous devriez vraiment essayer de clarifier votre code, c'est une bonne pratique, et cela vous fera gagner beaucoup de temps lors du débogage. –