我无法找到使用HttpWebRequest
的正确格式,并将其响应返回到Javascript AJAX函数的可读JSON
。
如果我只返回text
,它会在响应中添加转义斜杠。如果我反序列化text
它然后添加所有缩进并使我的Javascript无法读取。 (我认为因为它没有传递实际对象)
试图将可读的json对象传递给我的ajax。
控制器
[HttpPost]
public ActionResult teamLookUp(string ID)
{
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("someurl.com/apis");
myReq.ContentType = "application/json; charset=utf-8";
var response = (HttpWebResponse)myReq.GetResponse();
string text;
using (var sr = new StreamReader(response.GetResponseStream()))
{
text = sr.ReadToEnd();
}
var json2 = JsonConvert.DeserializeObject(text);
return Json(new { json = json2 });
// return Json(new {json = text}); returns json with escaping \'s
// i.e. "json":"{\"item":\"item2"}
// return Json(new {json = json2}); returns empty json,
// i.e. {"json":[[],[],[],[]]}
}
的Javascript
$.ajax({
url: "/Competitive/teamLookUp",
type: "POST",
data: "ID=" + ID,
success: function (json) {
alert(JSON.stringify(json));
alert(json[ID].name());
},
error: function(error) {
}
});
需要帮助将json object
返回到我的AJAX成功函数。
答案 0 :(得分:0)
使用
dynamic json2=JsonConvert.DeserializeObject(text);
而不是
var json2 = JsonConvert.DeserializeObject(text);
希望有所帮助
答案 1 :(得分:0)
您尝试将响应反序列化为什么类型的对象?现在它只是进入一个字符串。可能想要创建一个对象来反序列化您正在调用的服务的响应。
这是一个返回我想出的字符串对象的工作示例
public ActionResult ReturnJson()
{
var someText = "some random text";
return Json(new {json = someText});
}
的Javascript
<script>
function testAjaxCall() {
$.ajax({
url: '@Url.Action("ReturnJson")',
type: "POST",
success: function (result) {
alert(result);
alert(result["json"]);
},
error: function (error) {}
});
}
</script>