在ASHX AJAX c#中获取JSON
本文关键字:获取 JSON ASHX AJAX | 更新日期: 2023-09-27 17:50:05
在Home.aspx中设置一个脚本:
<script type="text/javascript">
function probarAjax() {
var Publicaciones = {
"Categoria": "Noticia"
}
$.ajax({
type: "POST",
url: "Controlador.ashx?accion=enviar",
data: JSON.stringify(Publicaciones),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
</script>
Inside of controller .ashx:
public void ProcessRequest(HttpContext context) {
context.Response.ContentType = "text/json";
var categoria = string.Empty;
JavaScriptSerializer javaSerialize = new JavaScriptSerializer();
categoria = context.Request["Categoria"];
var capaSeguridad = new { d = categoria };
context.Response.Write(javaSerialize.Serialize(capaSeguridad));
}
结果是:
Object {d: null}
为什么会有这个结果?如果我在数据中发送一个变量为Publicaciones
,值为"Noticia"
的参数
解决方案如下
<script type="text/javascript">
function probarAjax() {
var Publicaciones = {
"Categoria" : "Noticia"
}
$.ajax({
type: "POST",
url: "Controlador.ashx?accion=enviar",
data: JSON.stringify(Publicaciones),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data.d);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
</script>
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/json";
System.IO.Stream body = context.Request.InputStream;
System.Text.Encoding encoding = context.Request.ContentEncoding;
System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
string s = reader.ReadToEnd();
Noticia publicacion = JsonConvert.DeserializeObject<Noticia>(s);
var capaSeguridad = new { d = publicacion.Categoria };
context.Response.Write(JsonConvert.SerializeObject(capaSeguridad));
}
与类
public class Noticia
{
public string Categoria { get; set; }
}
谢谢你的帮助
更改:data: JSON.stringify(Publicaciones),
对于:data: Publicaciones
添加
context.Response.ContentType = "application/json";