为什么我的搜索代码无法在Internet Explorer上运行

时间:2010-08-18 14:32:19

标签: php javascript html jqgrid

我有以下代码搜索从数据库显示返回结果到页面并用jqgrid显示它们,我的代码与firefox工作正常,但它不工作ie,当我使用utf8 像阿拉伯字母一样,我将ie和firefox的编码都设置为unicode(utf8)

其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> 

我的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");

}

和我的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); 

为什么它不适用于ie(我用ie8测试)但是与opera和firefox一起工作

感谢

1 个答案:

答案 0 :(得分:1)

首先,您在使用setGridParam的行中引用时遇到问题。可能你的意思是

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

而不是

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

使用此代码构建url似乎并不好。你应该至少使用像

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

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

然后,firstname中的任何国际字符都会在网址中正确编码。

另一种方法是使用jqGrid的postData参数。例如,请参阅How to filter the jqGrid data NOT using the built in search/filter box