在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>
在Controlador.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}
为什么会有这样的结果?如果我在数据中发送一个带有值为"Noticia"
的变量Publicaciones
的参数。
发布于 2014-03-14 07:41:52
解决方案是这样的
<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>
在ashx内部
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; }
}
谢谢你的帮助
发布于 2019-01-04 05:12:32
更改:data: Publicaciones
的data: JSON.stringify(Publicaciones),
发布于 2020-04-08 20:25:09
添加
context.Response.ContentType = "application/json";
添加到ASHX方法中。
https://stackoverflow.com/questions/22374316
复制相似问题