我有一個MVC 3的網絡應用程序,我需要通過JavaScript從Web窗口應用程序訪問一個動作。從另一個應用程序通過javascript訪問MVC動作
我的行動返回一個Json的結果,我已經檢查工作得很好。然而,當使用另一個應用程序的javascript訪問它時,我可以看到它達到了我的操作,完成了所有工作,返回了我的數據,但是jquery函數給我提供了錯誤200並且沒有數據。
例子: 我的MVC操作:
public ActionResult GetData(int categoryId)
{
var listofSeries = new List<string>
{
"foo1",
"foo2",
"foo3"
};
return Json(listofSeries, JsonRequestBehavior.AllowGet);
}
這將返回我:["foo1","foo2","foo3"]
通常情況下,我的JavaScript函數用於查詢數據庫和找回數據的Highcharts圖表,但我有與這種例子相同的問題。
<script type="text/javascript">
$(document).ready(function() {
var foo = getData(9);
});
function getData(categoryId) {
var results;
$.ajax({
type: 'POST',
url: 'http://localhost:xxxx/Home/GetData',
//contentType: "application/json; charset=utf-8;",
async: false,
data: { "categoryId": categoryId },
dataType: "json",
success: function (data) {
console.log("results: " + data);
results = data;
}
});
return results;
}
</script>
有了這個,我得到:
http://localhost:63418/Home/GetData?categoryId=9 200 OK
results: null
如果我添加的contentType,我甚至不能看到函數Firebug控制檯運行時,所有我看到的是results: null
。當我刪除它,但我得到上面的錯誤。
我被告知它可能不可行,因爲「跨站腳本」。而是讓我的JavaScript函數調用web服務(或處理程序,但我還沒弄清楚如何使其中一個)然後調用我的動作,將數據返回給服務,然後服務將數據返回給javascript 。
但是現在我在嘗試連接到我的webservice時遇到415 Unsupported Media Type錯誤消息。
我IWebService.cs:
[ServiceContract]
public interface IWebService
{
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, Method = "POST")]
void GetData(int mileId);
}
我WebService.svc:
public void GetData(int categoryId)
{
string url = "http://localhost:63418/Home/GetWoWData?categoryId=" + categoryId;
WebRequest wr = WebRequest.Create(url);
WebResponse response = wr.GetResponse();
}
我還沒有返回任何東西,它甚至不會去這個功能。給我415錯誤信息。
如果我改變的contentType爲「text/xml」的我得到一個錯誤400
,我真的很喜歡這個工作,而無需使用web服務,並弄清楚爲什麼我得到一個錯誤200 OK時,我可以看到正在運行的動作,但如果這是不可能的,任何想法爲什麼web服務不工作?
謝謝。
此外,我知道我沒有在這個例子中使用categoryId,儘管作爲參數傳遞它。但我確實在我的應用程序的正常版本中使用它。 – LanFeusT 2011-06-15 17:16:23
爲什麼你的函數在你的文檔中準備好了?可能不是問題,但似乎也不是一個好主意。 你也錯過了;這裏:var foo = getData(9) – Patricia 2011-06-15 17:24:07
The;失蹤是在這裏輸入它的錯誤。我將這個功能移到了外面,問題仍然存在。我糾正了主要帖子。謝謝。 – LanFeusT 2011-06-15 17:35:59