请帮助一个新手-x
我使用jQuery调用.net WebAPI来进行Get调用。后端是SQL Server。
在WebAPI中,我使用实体框架来调用存储过程。
var cat = ent.GetCategories();
return Json.Encode(cat);
这会获取数据,但在浏览器上,数据看起来是这样的,它不会插入我的下拉列表。我猜这和转义反斜杠有关。我该如何解决这个问题?
"["Housing","Jobs","For Sale","Community","Services"]"
在jQuery.ajax()中,这太简化了。尝试低于
jQuery.ajax({
type: "GET" //or POST,
dataType: "json",
url: "your url",
success: function(data) {
//data returns ["Housing","Jobs","For Sale","Community","Services"]
}
});
为了一个简单而好的解释,
通过设置
dataType: "json"
,您告诉jQuery解析以JSON形式接收数据,因此数据被传递到success()函数作为Javascript数组
问题是您正在对结果进行双重序列化。Web API为您进行序列化,因此您不需要调用Json.Encode()
。相反,只需让API控制器方法返回cat
。
如果数据像"["Housing","Jobs","For Sale","Community","Services"]"
一样返回,那么在填充下拉列表之前可以执行以下操作:
var escaped = "["Housing","Jobs","For Sale","Community","Services"]";
var result = $("<div />").html(escaped).text();
之后,result
将具有以下值"["Housing","Jobs","For Sale","Community","Services"]"
。
然后,您可以调用jQuery
解析函数来获得一个javascript数组,您可以将其填充到下拉列表中:
var jsArr = $.parseJSON(result);