views:

64

answers:

1

hello all

i have the following code for search from database show return result to the page and show them with jqgrid, my code works fine with firefox but its not work on ie, when i use of utf8 like arabic letters, i set both of encoding of ie, and firefox to unicode(utf8)

its html code

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> 

my javascript code

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

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

}

and my php code

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); 

why its not work with ie(i teste with ie8) but works with opera and firefox

thanks

+1  A: 

First of all you have problem with quotes in the line where you use setGridParam. Probably you mean

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

instead of

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

It seems to me not good to build url with this code. You should at least use something like

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

or

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

Then any international characters from the firstname will be encoded correctly in the url.

One more way is the usage of postData parameter of the jqGrid. See http://stackoverflow.com/questions/2928371/how-to-filter-the-jqgrid-data-not-using-the-built-in-search-filter-box/2928819#2928819 for example.

Oleg
thanks for your reply , my problem is solved with jQuery.param function
user1400