почему мой поисковый код не работает в Internet Explorer - PullRequest
0 голосов
/ 18 августа 2010

У меня есть следующий код для поиска из базы данных, показывающий результат возврата на страницу и показывающий их с помощью jqgrid, мой код отлично работает с firefox, но не работает, т.е. когда я использую 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), но работает с оперой и firefox

спасибо

1 Ответ

1 голос
/ 18 августа 2010

Прежде всего у вас проблема с кавычками в строке, где вы используете 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 будут правильно закодированы в URL.

OneЕще одним способом является использование postData параметра jqGrid.См. Как фильтровать данные jqGrid, НЕ используя, например, встроенное поле поиска / фильтра .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...