2009-11-22 5 views
1

J'ai un problème avec certains services Web de base ajax et asp.net. Dans ma page de site Web j'ai une zone de texte qui est l'éditeur de texte de portée, quand je mets le texte et essaye de le soumettre, ajax supposé prendre le texte et le passer au service Web d'asp.net. Lorsque la phrase ne contient pas de caractères d'échappement, elle se passe bien, mais quand elle contient un caractère d'échappement, le service web asp.net me donne l'erreur 500. Au débogage, il n'entre même pas dans le service web. Donc, la question est: Comment puis-je résoudre ce problème?Caractère d'échappement et erreur 500

Voici le code que j'ai. Javascript:

//posting the user comment 
function postComment() { 
    var comment_body = $("textarea[id*='txt_editor']").val(); 
    $.ajax({ 
     type: "POST", 
     url: "Article.asmx/postComment", 
     data: "{'article_id': '" + article_id + "', 'comment_body' : '" + comment_body + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      page_num = 1; 
      getComments(); 
      clearComment() 
     } 
    }); 
} 

Et le service Web ressemble à ce que:

//posting the comment to database 
    [WebMethod] 
    public int postComment(int article_id, string comment_body) 
    { 
     try 
     { 
      using (ForMarieDataContext forMarie = new ForMarieDataContext()) 
      { 
       tbl_article_comment newComment = new tbl_article_comment(); 
       newComment.article_id = article_id; 
       newComment.comment_author = "Dmitri"; 
       newComment.comment_date = DateTime.Now.ToString(); 
       newComment.comment_body = comment_body; 

       forMarie.tbl_article_comments.InsertOnSubmit(newComment); 
       forMarie.SubmitChanges(); 

      } 

      return 1; 
     } 
     catch(Exception ex) 
     { 
      return 0; 
     } 
    } 
} 

C'est le code de base et je vais ajouter plus à lui pour vérifier la sécurité. Cependant pour l'instant, je dois faire quelque chose avec les caractères d'échappement dans le texte. Merci d'avance.

Répondre

2

Laissez jQuery gérer l'échappement et l'encodage des paramètres:

$.ajax({ 
    type: "POST", 
    url: "Article.asmx/postComment", 
    data: { article_id: article_id, comment_body: comment_body }, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     page_num = 1; 
     getComments(); 
     clearComment() 
    } 
}); 

attention à la propriété data.