我有一个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