2014-05-02 8 views
0

J'ai une erreur en obtenant une url par ajax avec le caractère spécial de (á '), j'ai deux sélecteurs quand je choisis l'Amérique du Sud et le Pérou n'a rien retourné mais dis moi ce fiebugErreur avec des caractères spéciaux dans l'URL

GET http://www.example.com/deconsultas/index.php?controller=galerias&action=view&pais=Per%FA

J'ai ce javascript;

$("#listar").click(function(){ 
    var pais = $("#pais2").val(); 

    $.get("index.php?controller=galerias&action=view&pais="+pais, function(data){ 
     $("#resultados").html(data); 
    }); 
    return false; 
}); 

public function view() 
    { 
     $db = new Galerias_Model; 

     if (BM_Validations::isAjax()) : 
      $this->setTemplate("galerias"); 
      $this->setFilenames("galerias", 'view.html'); 

      $pais = htmlentities($_GET['pais']); 
      $pais=trim($pais); 
      $galerias = $db->getImages($pais); 
      if ($galerias) : 
       $this->assignVar('ENCONTRO', true); 

       $ciudad = ""; 
       foreach ($galerias as $row) : 
        $mostrarCiudad = false; 
        if ($ciudad!=$row['ciudad']) : 
         $mostrarCiudad = true; 
         $cont = 0; 
        endif; 
        $cont++; 

        $this->assignBlock('galerias', array(
         'ID' => $row['id'], 
         'MOSTRAR_CIUDAD' => $mostrarCiudad, 
         'CIUDAD' => $row['ciudad'], 
         'IMAGEN' => $row['imagen'], 
         'SALTO_LINEA' => (($cont % 5) == 0) 
        )); 

        $ciudad = $row['ciudad']; 
       endforeach; 
      endif; 

      $this->tpl->display('galerias'); 
     endif; 
     die(); 
    } 

Et c'est le php qui reçoivent cette URL, son semble être quelque chose comme .htaccess?

J'ai ceci:

#Options +FollowSymlinks 
Options +SymLinksIfOwnerMatch 
RewriteEngine On 

RewriteRule ^([^/]*)\.html$ /deconsultas/index.php [L] 
RewriteRule ^([^/]*)/$ /deconsultas/index.php?controller=$1 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /deconsultas/index.php?controller=$1&id=$2&titulo=$3 [L] 
RewriteRule ^([^/]*)/([^/]*)/$ /deconsultas/index.php?controller=$1&action=$2 [L] 
RewriteRule ^([^/]*)\.dc$ /deconsultas/index.php?controller=operador&url=$1 [L] 

RewriteRule ^panel/([^/]*)$ /deconsultas/index.php?controller=panel&action=$1 [L] 

#RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /deconsultas/index.php?controller=$1&action=$2&id=$3 [L] 

RewriteRule ^admin/([^/]*)$ /deconsultas/index.php?controller=admin&action=$1&inactivos [L] 


<IfModule mod_security.c> 
SecFilterEngine Off 
SecFilterScanPOST Off 
</IfModule> 
+0

Vous ne devriez pas construire votre propre querystring. Laissez jQuery faire cela pour vous. – Brad

+0

Et comment je fais ça? – Diego

+0

@Diego Utilisez https://api.jquery.com/jQuery.param/ Voir [ma réponse] (http://stackoverflow.com/a/23434651/227299) –

Répondre

0

Lors de la construction d'une chaîne de requête, vous devez url encode chaque composant, par exemple á encode %C3%A1

$("#listar").click(function(){ 
    var pais = $("#pais2").val(); 
    var urlEncodedPais = encodeURIComponent(pais); 
    $.get("index.php?controller=galerias&action=view&pais=" + urlEncodedPais , function(data){ 
     $("#resultados").html(data); 
    }); 
    return false; 
}); 

encore mieux des moyens est de laisser jQuery faites-le pour vous https://api.jquery.com/jQuery.param/

$("#listar").click(function(){ 
    var pais = $("#pais2").val(); 
    var params = { 
     controller: 'galerias', 
     action: 'view', 
     pais: pais 
    }; 
    $.get("index.php?"+ $.param(params), function(data){ 
     $("#resultados").html(data); 
    }); 
    return false; 
}); 

Notez que cela vaut aussi pour les noms de valeurs-clés, de sorte que vous pourriez avoir le paramètre appelé país si vous voulez (mais je ne le recommanderais pas)

jQuery.param({"país": 'Índia'}) 
> "pa%C3%ADs=%C3%8Dndia" 
+0

Son dire: GET http://www.xxx .com/deconsultas/index.php? contrôleur = galerias & action = view & pais = Par% C3% BA – Diego

+0

@Diego Quoi? Vous ne pouvez pas comprendre ce que votre commentaire demande ... –

+0

Le get me générer cette URL – Diego

Questions connexes