我使用此代码访问我的服务器(MVC),这工作正常。在结果“数据”({“Id”:30,“描述”:“样本照片”,“名称”:“第一次Galery”})我尝试获取属性data.Name,这只是什么都不返回,是什么这段代码中的问题?
的JavaScript
$(function () {
$('#UserGaleries_').change(function () {
try {
if ($(this).val() == -1) {
$('#NameGaleriesEdit').val('');
$('#DescriptionGaleriesEdit').val('');
}
else {
$.post('/UserGaleries/ChangeCategorie',
{ selectedID: $(this).val() },
function (data) {
alert(data.Name); //Nothing
$('#NameGaleriesEdit').val(data.name);
$('#DescriptionGaleriesEdit').val('asdf');
});
}
} catch (e) {
alert(e);
}
});
});
MVC
[Serializable]
public class ResponsetModel
{
public int Id { get; set; }
public string Description { get; set; }
public string Name { get; set; }
}
public JsonResult ChangeCategorie(int selectedID)
{
DbLayer.UserGaleriesManager uc = new DbLayer.UserGaleriesManager();
DbLayer.Models.UsersGalery cat = uc.GetGaleriesById(selectedID);
ResponsetModel retValue = new ResponsetModel()
{ Id = cat.Id, Name = cat.Title, Description = cat.Description };
JsonResult oView = Json(retValue, "text/plain", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);
return oView;
}
答案 0 :(得分:3)
如果在未指定预期内容类型的情况下使用post()
方法,data
将只是一个包含JSON的字符串(与JavaScript对象相对)。请alert(data)
验证。
将该帖子重写为
$.ajax({
url:'/UserGaleries/ChangeCategorie',
data:{ selectedID: $(this).val() },
method:"POST",
dataType:"json",
success:function (data) {
alert(data.Name);
}
});
或者您可以使用$.getJSON()
,但我不确定您是否可以让它执行POST请求。
答案 1 :(得分:2)
您可以尝试将$ .post()中的dataType设置为“json”。查看[文档]中的示例。1
它也是data.Name
而非data.name
。
这样的事情:
$.post('/UserGaleries/ChangeCategorie',
{ selectedID: $(this).val() },
function (data) {
alert(data.Name);
$('#NameGaleriesEdit').val(data.Name);
$('#DescriptionGaleriesEdit').val('asdf');
}, "json");
重要建议:使用Firebug检查应用程序服务器的确切响应。
答案 2 :(得分:1)
您还可以在使用JSON.parse(result)
返回JSON数据后解析它。
答案 3 :(得分:-1)
尝试使用不同的方式访问数据。使用数据[“名称”]