我是ASP新手。我想创建一个ASP页面,它将根据请求返回JSON格式的数据。我遵循了一些教程,现在我可以看到的是一个完整的页面链接,我的代码中有回调。所以从本质上讲,服务器输出了很多HTML,这显然是无效的JSON。所以我唯一的问题是如何制作这样的网页。我希望我的应用程序能够设计为当我进入网页时,说http://localhost:8080
(或类似的东西),我的C#代码中的回调或函数连接到数据库,收集一些信息并将其发回作为有效JSON中的响应。我不是在寻找能够达到同样效果的库,而是通过简单地使用一组Response.Write
语句来实现它。
请原谅我,如果我可能认为我与我的概念不一致,因为我对这一切都很陌生。
非常感谢任何帮助。
此致 p1n3appl3
编辑:我目前正在使用以下JavaScript代码:
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:47949/Default.aspx/NameChange");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
}
xhr.send("");
它会调用所有内容,一切都很好,但问题是它会再次返回“Default.aspx”页面的整个代码。我的意思是,方法NameChange
甚至没有被调用(我通过设置断点来测试它)。
我做错了什么?
答案 0 :(得分:3)
您可以在页面上定义PageMethod:
public partial class _Default : Page
{
[WebMethod]
public static SomeObject GetObject()
{
SomeObject result = ... fetch from db or something
return result;
}
}
或者您也可以使用JavaScriptSerializer类手动执行此操作:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "application/json";
SomeObject result = ... fetch from db or something
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(result);
Response.Write(json);
}
}
答案 1 :(得分:1)
string jsonProperty = Request["JSonProperty"];//your result
if (!string.IsNullOrEmpty(jsonProperty))
{
Response.Clear();
Response.ContentType = "application/json";
Response.Write(RenderJSon());
Response.Flush(); // Flush the data to browser
Response.SuppressContent = true; // Suppress further output - "standard" html-
// content is not rendered after this
return;
}