2011-02-07 8 views
1

Salut J'utilise un contrôleur asp.net MVC pour interroger une API REST tierce.Réponse json à venir avec le caractère newline asp.net mvc

Je reçois une réponse, mais elle a des caractères de retour à la ligne dans la réponse.

{\ n \ "de \": 1, \ n \ "à \": 10, \ n \ "total \": 500570, \ n \ "currentPage \": 1, \ n ... Je renvoie cette vue à une vue et la vue ne peut pas la lire à cause de \ n.

J'utilise le code suivant pour faire l'appel et obtenir le résultat

public JsonResult Items(string search) 
    { 

     var client = new WebClient(); 
     string url = "http://xxxxxxxxxxxxxxx/v1/products?apiKey=xxxxxxxxxx&format=json"; 


     JsonResult json = Json(client.DownloadString(url), "text/x-json",Encoding.UTF8, JsonRequestBehavior.AllowGet); 


     return json; 
    } 

Du côté de vue script suivant

<script type="text/javascript"> 

    $(function() { 
     $('#searchlink').click(function() { 
      $.getJSON("Item/Items", $("#search").val(), getitems); 

     }); 
    }); 

    function getitems(responses) { 
     alert(responses); 

     $.each(responses, function (index, response) { 
       // do stuff 
     }); 
    } 

</script> 

Qu'est-ce que je fais mal ici?

+0

Avez-vous vérifié que la réponse de l'API n'inclut pas les nouvelles lignes? –

+0

Oui, j'ai vérifié, la réponse de l'API est comprise et c'est pourquoi je suis étonné que, est-ce quelque chose que je fais mal parce que j'essaye cette première fois. – user393014

Répondre

2

Si vous voulez supprimer tous les \ n Les caractères que vous pouvez supprimer les sauts de ligne dans le contrôleur avant de l'envoyer à la vue:

string result=client.DownloadString(url); 
result=result.Replace("\r", "").Replace("\n", "\n"); 

Si vous voulez garder les NewLine Les personnages que vous devez leur échapper en Javascript avant vous analyser Json:

$.get("Item/Items", $("#search").val(), getitems(data) { 
    //Escape \r,\n 
    data=data.replace(/\n/g, "\\n").replace(/\r/g, "\\r"); 
    //and parse Json 
    responses=jQuery.parseJSON(data); 
    alert(responses); 

    $.each(responses, function (index, response) { 
      // do stuff 
    }); 
});