2011-02-07 56 views
1

嗨 我正在使用一个asp.net MVC控制器来查询第三方REST API。JSON响应与换行符字符聊天室asp.net mvc

我得到一个响应,但它在响应中有换行符。从\“:1,\ n \”到\“:10,\ n \”全部\“:500570,\ n \”currentPage \“:1,\ n ... 。

我将此视图返回到视图,并且由于\ n视图无法读取它。

我使用下面的代码来拨打电话,并得到结果

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; 
    } 

在观察侧下面的脚本

<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> 

我在做什么错在这里?

+0

您是否验证过API的响应不包括换行符? – 2011-02-08 01:49:25

回答

2

如果你想删除所有\ n个字符,你可以删除控制器中的换行符之前发送到视图:

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

如果你想保留换行符,你必须在逃离他们在Javascript 您解析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 
    }); 
});