我和我的同事正在开发一个 Web API,我们正在使用 knockoutjs(通过 Umbraco CMS)进行通信。为了避免遇到浏览器内置的跨站点脚本安全性,我们将 api 放在我们网站目录的虚拟目录中。
如果我们在目录中放置一个“愚蠢”的 html 文件,我们可以毫无问题地与 api 进行“对话”。另一方面,如果我们尝试从 umbraco 引用虚拟目录中的 api,则找不到。
我四处寻找各种解决方案,但大多数(如果不是全部)是如果您使用的是 MVC3,哪些解决方案并没有真正的帮助。
下面是一些尝试联系 API 的 javascript:
function subscribe() {
if($("#siteForm").valid()=== true){
alert("add subscriptiooncalled");
var mySubscription = ko.toJS(ViewModel);
var json = JSON.stringify(mySubscription);
alert(json);
$.ajax({
url: API_URL,
cache: false,
type: 'POST',
contentType: 'application/json',
data: json,
success: function (data) {
alert("data is pushed");
},
error: function (error) {
alert("ERROR STATUS: " + error.status + " STATUS TEXT: " + error.statusText);
}
});
}else{
}
}
这样做也不起作用:
var root = location.protocol + "//" + location.host;
var API_URL = root + "/api/Subscriptions/";
请注意,警报用于测试目的。无论如何,代码中的 url 显然不起作用,插入完整的 url 也不起作用(http:// 等)。
有什么建议么?如果有帮助,请使用 Umbraco 4.7.2。
编辑 编辑 编辑 编辑 编辑 这很愚蠢。也许它是几种不同解决方案的高潮,也许不是,但这一切都归结为提交按钮。是的。通过将按钮类型从“提交”更改为“按钮”,一切正常。天哪,这太愚蠢了。