【发布时间】:2013-01-14 23:38:32
【问题描述】:
我无法获取 json 对象。
我的对象是:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
人员控制:
public ActionResult Index()
{
return View();
}
// GET: /Persons/GetPerson
//[AcceptVerbs(HttpVerbs.Get)]
//[OutputCache(Duration = 0, VaryByParam = "*")]
public JsonResult GetPerson()
{
Person p = new Person { firstName = "Jonas", lastName = "Antanaitis" };
return Json(p, JsonRequestBehavior.AllowGet);
}
我的索引视图:
@Scripts.Render("~/bundles/knockout")
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<div id="dispJson"></div>
<script type="text/javascript">
var data = $.getJSON(".../GetPerson", function (result) {
//state = result.readyState;
firstName: result.firsName;
lastName: result.lastName;
})
.error(function () { alert("error"); });
function viewModel() {
ko.mapping.fromJS(data);
//state = data.readyState;
//firstName = data.firstName;
//lastName = data.lastName;
};
document.write(JSON.stringify(data)); //this line prints "{"readyState":1}"
ko.applyBindings(new viewModel());
</script>
当我在浏览器中转到“.../GetPerson”时,会显示以下内容: {"firstName":"Jonas","lastName":"Antanaitis"}
,但是当尝试在视图中获取 javascript 数据时 - 我没有得到这些数据。
我做错了什么,为什么我无法获取数据? 注释代码的地方 - 我尝试了这种方法..但没有任何帮助。
我试过了:
*$.ajax({
type: "GET",
cache: false,
url: ".../GetPerson",
}).done(function (msg) {
alert("Data Saved: " + msg.readyState + " " + msg.firstName + " " + msg.lastName);
});*
然后警报框显示:“Data Saved: undefined Jonas Antanaitis”
【问题讨论】:
-
您能否检查浏览器调试器工具中的网络选项卡,以检查您在使用 ajax 调用时尝试访问的 url。 ajax url
.../GetPerson看起来有点不对劲。使用类似于@Url.Action("GetPerson", "Persons")的Url帮助器生成 url 可能在您的 JSON 或 Ajax 调用中效果更好。 -
我的原始 URL = "h t t p://localhost:52368/Persons/GetPerson"(我写的很矮,因为我不能发布完整的 url)。在网络中显示两个请求:“h t p://localhost:52368/Persons/GetPerson?_=1359611346968”和“h t p://localhost:52368/Persons/GetPerson”
-
啊。我知道了。在这种情况下,如果网址相同,则可能与
felix的答案有关。
标签: asp.net-mvc json jquery knockout.js