2010-08-18 4 views
0

J'ai le code suivant pour la recherche de la base de données montrer le résultat de retour à la page et les montrer avec jqgrid, mon code fonctionne très bien avec firefox mais son travail ne fonctionne pas, quand j'utilise de UTF8 comme des lettres arabes, i définir à la fois l'encodage de savoir et Firefox unicode (UTF8)pourquoi mon code de recherche ne fonctionne pas sur Internet Explorer

son code html

first name: <input type="text" id="firstname" onkeydown="doSearch(arguments[0]||event)" value="" class="mytextbox" /> 

<button onclick="gridReload()" id="submitButton" style="margin-right:100px;" class="Buttons">search</button> 

mon code javascript

function gridReload(){ 
    var name = jQuery("#firstname").val(); 

jQuery("#list2").jqGrid('setGridParam',{url:"<?php bloginfo('template_url'); ?>/post2.php?firstname="+firstname",page:1}).trigger("reloadGrid"); 

} 

et mon code php

if(isset($_GET["firstname"])) 
$firstname = $_GET['firstname']; 

mysql_query ("set names utf8"); 

if($firstname!='') 
$where= " firstname LIKE '$firstname%'"; 

$SQL = "SELECT id,firstname,lastname FROM mytable ".$where." 
    ORDER BY $sidx $sord LIMIT $start , $limit"; 

$result = mysql_query($SQL) or die(mysql_error()); 
$responce->page = $page; 
    $responce->total = $total_pages; 
    $responce->records = $count; 
$i=0; 
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) { 
    $responce->rows[$i]['id']=$row[id]; 
    $responce->rows[$i]['cell']=array(
    $row[id],$row[firstname],$row[lastname]); 
    $i++; 
    } 

echo json_encode($responce); 

pourquoi son travail pas à savoir (i teste avec IE8) mais fonctionne avec Firefox et Opera

grâce

+0

Définir "fonctionne" vs "ne fonctionne pas". Quel résultat inattendu obtenez-vous dans le cas IE? –

+0

sur IE c'est son record pas trouvé, mais sur Firefox il trouve mon enregistrement de recherche et montre sur jqgrid – user1400

Répondre

1

d'abord tout ce que vous avez des problèmes avec des guillemets dans la ligne où vous utilisez setGridParam. Probablement vous dire

jQuery("#list2").jqGrid('setGridParam', 
    {url:"<?php bloginfo('template_url'); ?>/post2.php?firstname="+firstname, 
    page:1}).trigger("reloadGrid"); 

au lieu de

jQuery("#list2").jqGrid('setGridParam', 
    {url:"<?php bloginfo('template_url'); ?>/post2.php?firstname="+firstname", 
    page:1}).trigger("reloadGrid"); 

Il me semble pas bon de construire url avec ce code. Vous devriez au moins utiliser quelque chose comme

jQuery("#list2").jqGrid('setGridParam', 
    {url:"<?php bloginfo('template_url'); ?>/post2.php?firstname=" 
     +encodeURIComponent(firstname), 
    page:1}).trigger("reloadGrid"); 

ou

jQuery("#list2").jqGrid('setGridParam', 
    {url:"<?php bloginfo('template_url'); ?>/post2.php?"+ 
     jQuery.param({firstname: firstname}), 
    page:1}).trigger("reloadGrid"); 

Ensuite, tous les caractères internationaux du firstname seront correctement codées dans l'URL.

Une autre façon est l'utilisation du paramètre postData du jqGrid. Voir How to filter the jqGrid data NOT using the built in search/filter box par exemple.

+0

merci pour votre réponse, mon problème est résolu avec la fonction jQuery.param – user1400

Questions connexes