2009-11-05 3 views
1

Mise à jour:jquery réponse ajax supprime le caractère +

Il semble que le problème est quand je lis la valeur du html pour commencer.

C'est le balisage:

<input name="someval" type="text" value="Receive (+ open)" /> 

Je lis la valeur de someval comme celui-ci et le passage à l'appel ajax:

$.ajax({ 

     data: 'someval=' + $("input[name=someval]").val(), 

     success: function(resp) { 
      $("#targetd").html(resp); 
      alert(resp); 
     } 
}); 

On dirait que le problème se produit quand il concaténer $("input[name=someval]").val() à data: 'someval=' + puisque $("input[name=someval]").val() a un + dedans.

Old

Je fais un appel ajax à un script php et la réponse retournée contient des balises html. Je prends cette réponse et l'assigner à un div après cela.

success: function(resp) { 
    $("#targetd").html(resp); 
    alert(resp); 
} 

Une partie de la réponse renvoyée est supposée ressembler à ceci. (remarquez le signe +)

<input name="someval" type="text" value="Receive (+ open)" /> 

Il fonctionne très bien et je peux assigner à la div, sauf que, pour une raison quelconque, le balisage retourné manque le + signe

<input name="someval" type="text" value="Receive ( open)" /> 

Lorsque le php Le script lui-même génère le balisage, il fonctionne correctement, mais lorsque le balisage est passé à la page via une réponse ajax, le + disparaît. Je ne fais rien de spécial au balisage, comme le montre le code ci-dessus, je le prends tel quel dès qu'il est retourné et je l'attribue à la div. Lorsque j'alerte la réponse directement, le + est également manquant donc pas seulement quand il est assigné à la div. Je ne sais pas ce qui pourrait se passer ici.

+1

S'il vous plaît poster la partie de votre code php qui génère la réponse ajax –

+0

Jose, vous me avez donné une idée, je vais l'essayer et vous revenir/mettre à jour le poste. – Chris

+0

Jose, on dirait que le problème est plus tôt que ça. Je passe d'abord cette valeur de la page à php via ajax. C'est là que l'erreur de lecture initiale arrive. Je vais mettre à jour la question – Chris

Répondre

1

Avez-vous essayé le codage HTML de la réponse? J'utilise ces fonctions dans mon javascript pour encoder/décoder.

function HtmlEncode(value) 
{ 
    return $('<div/>').text(value).html(); 
} 

function HtmlDecode(value) 
{ 
    return $('<div/>').html(value).text(); 
} 
+0

Merci Phil, c'est aussi une bonne information. – Chris

1

Je recommande d'essayer d'échapper à votre plus + comme & # 43; et voyez si cela résout votre problème. Si c'est le cas, c'est un problème d'échappement d'entité.

+0

Merci tooleb, je l'ai essayé, mais n'a malheureusement pas fonctionné. +1 cependant pour la tentative d'aider. – Chris

+1

Donc si vous aviez initialement "Recieve (& # 43; open)" comme valeur et vous avez essayé votre code, quel était le résultat, juste curieux? – tooleb

+0

Il manquait toujours le '+' mais il s'est avéré que c'était parce qu'il ne l'avait pas reçu pour commencer. Je lis d'abord la valeur de 'someval', puis je la donne au php pour la sortir à nouveau. J'ai mis à jour la question pour refléter le dépannage récent. – Chris