2010-08-01 6 views
0

J'utilise cakePHP 1.26
J'ai reçu une zone de texte d'entrée qui contient une URL et je veux soumettre l'URL et l'enregistrer dans la base de données en utilisant Jquery AJAX.
Ce que vous feriez pour une URL contenant des caractères spéciaux

Voici la partie HTML:

<input type="text" id="testing" value="https://stackoverflow.com/questions/ask"> 

Ceci est la partie JQuery:

var whatContent=$("#testing").val(); 
     var curl="http://localhost:8080/test/grab/"+whatContent; 
     $.ajax({ 
     type: "POST", 
     url: curl, 
     success: function(data) {  
     alert(data);} 
     }); 

Ceci est le code de l'action dans le contrôleur:

function grab($w=null){ 
    if($w!=null){ 
    return $w; 
    } 
} 

Le code a fonctionné et j'ai pu voir apparaître le message d'alerte , Mais il a montré: https://stackoverflow.com/
au lieu de
https://stackoverflow.com/questions/ask

J'ai essayé d'utiliser escape (whatContent) et encodeURI (whatContent), mais ils ne pouvaient pas aider,
la zone d'alerte m'a montré encore https://stackoverflow.com/
au lieu de
https://stackoverflow.com/questions/ask

Je ne sais pas comment faire avec les données d'URL contenant des caractères spéciaux en elle.

+2

Que se passe si vous le faites 'encodeURIComponent (whatContent)'? –

+0

Ceci est probablement un problème avec le traitement du côté serveur. – Gumbo

+0

Merci nick et Gumbo pour l'aide – user327712

Répondre

1

Peut-être un debug($w) en vous l'action du contrôleur pourrait révéler quelque chose. Quelle est la sortie d'une autre entrée que l'adresse qui est votre objectif?

1

Ne pas que vous devez être connecté en SO à poser une question? Il serait logique que SO redirige juste votre demande vers la page principale.

+3

Vous ** n'avez pas besoin d'être connecté pour poser une question sur SO, il n'y a pas une telle redirection. Simple à tester, déconnectez-vous et essayez-le. De plus, il ne fait aucune demande à SO, il ne fait que passer du texte à une page qui * arrive * à être une URL. –

3

Semble drôle à faire une requête POST, mais ajouter les données sur l'URL. Soit l'utilisateur GET, et escape(whatContent), ou l'utilisation de post et passer whatContent en tant que paramètre de données.