![](/img/trans.png)
[英]Sending a JSON post request to asp.net mvc and getting partial view result, fails to get response
[英]Getting empty Response from get request from Rest service in MVC 4 Asp.net
我有一個簡單的方法來創建對象團隊列表,將其轉換為Json然后返回它。
public ActionResult Index()
{
var teams = new List<Team>() {
new Team{ Name = "Caracas F.C", City = "Caracas", Id = 1},
new Team{ Name = "Millonarios", City = "Bogota", Id = 2},
new Team{ Name = "Independiente", City = "Bogota", Id = 3}};
var jsonData = new { teamsData = teams };
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
當我轉到該URL( http://prototypeteam.apphb.com/ ,自己檢查)時,我可以清楚地看到Json
{“ teamsData”:[{“ Id”:1,“名稱”:“ Caracas FC”,“城市”:“ Caracas”},{“ Id”:2,“名稱”:“ Millonarios”,“城市”: “ Bogota”},{“ Id”:3,“ Name”:“ Independiente”,“ City”:“ Bogota”}]}
但是,當我嘗試使用JQuery獲取Json時,它會返回而沒有響應:
self.allTeams = ko.observableArray();
$.getJSON("http://prototypeteam.apphb.com/", function (data) {
var mappedTeams = $.map(data.teamsData, function (item) {
return new TeamViewModel(item);
});
self.allTeams(mappedTeams);
});
TeamViewModel = function (data) {
self = this;
self.Id = data.Id;
self.Name = data.Name;
self.City = data.City;
}
這就是我使用Mozilla的Firebug所獲得的。
如果有人可以幫助我了解為什么會這樣。 我不明白為什么我可以在URL上清楚地看到Json,但是JQuery似乎不了解發生了什么。 謝謝。
您看到的是相同的原產地政策。
Javascript具有一種安全措施,您不能從外部URL獲取內容,而只能從同一域獲取具有Ajax的文件。
有兩個例外:
JSONP。 由於jsonp並不是真正的Ajax,而是像其他腳本標記一樣將腳本標記插入DOM,因此避免了相同的原始策略。 服務必須支持此功能,並將json字符串包裝在函數中,腳本加載后即可執行。
CORS。 啟用CORS標頭可讓您使用其他域中的腳本,但是同樣必須在服務器端進行設置。
還可以選擇使用Yahoo YQL或Pipes之類的服務,但這只是獲取內容並將其包裝在JSONP中或添加CORS標頭,因此它使用上述兩個選項之一。
即使您在localhost上運行所有內容並嘗試從Web獲取文件,也可以使用相同的原始策略,因為URL不匹配,因此相同的原始策略將不允許該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.