编辑:我认为这个函数调用了错误的api,但是在评论之后我意识到该函数根本不起作用。该页面正在生成调用本身。
那么为什么当没有参数的同一个函数并且包含在Ko.computed中的函数运行正常时,这个函数是否根本不向控制器发送调用?
我正在使用Knockoutjs和ASP.net MVC 5来制作网页。有两个调用服务器传递参数一个工作正常,另一个从不工作。
我正在使用此练习作为我自己项目的基础。 using-web-api-with-entity-framework/part-6
我在练习中有一个ajax助手
function ajaxHelper(uri, method, data) {
self.error(''); // Clear error message
return $.ajax({
type: method,
url: uri,
dataType: 'json',
contentType: 'application/json',
data: data ? JSON.stringify(data) : null
}).fail(function (jqXHR, textStatus, errorThrown) {
self.error(errorThrown);
});
}
下面的这个功能可以使用GET api / Guests / {id}的API返回数据
来发送 GET / api / Guests / 20 self.getGuestDetail = function(item) {
ajaxHelper(guestUri + item.GuestID, "GET").done(function(data) {
self.detail(data);
});
然而,这个几乎完全相同的功能并不会返回任何数据,基本上相同的服务器调用的发送方式也不同。
它想要的api是GET api / RoomBooking?DateFrom = {DateFrom}(此阶段的服务器端datefrom是一个字符串)
self.RoomList = ko.observableArray(); //an array that will hold each room when foreached ko.computed(
self.ShowFreeRoomsFunction = function (item) {
ajaxHelper(roombookingUri + item.BookingFrom, "GET").done(function (data) {
self.RoomList(data);
});
我整天都在看这个,完全迷失了。我已经用简单的字符串替换了Datefrom以获得通过的东西,但是一旦我尝试传递参数,该方法似乎永远不会看到它。
当我没有传递参数并用ko.computed换行时,该方法可以返回数据。
这是通过将其包装在ko.computed函数中进行的相同调用。它发送 GET / api / RoomBooking / api这就是我想要的
self.RoomList = ko.observableArray(); //an array that will hold each room when foreached ko.computed(
self.ShowFreeRoomsFunction = ko.computed(function () {
ajaxHelper(roombookingUri, "GET").done(function (data) {
self.RoomList(data);
});
});
接近成功,网址必须为http://localhost:50524/api/RoomBooking/?textA=asdfghjkl?在里面。现在需要修复的是如何传递变量以替换asdghjkl然后移动日期。
如果我手动将URL输入浏览器,我可以看到它在fiddler中移动,并将数据作为json文件返回。
但是,如果我尝试通过该程序来完成它,它永远不会显示在fiddler中,也不会运行。
提琴手结果:
结果协议主机URL正文缓存内容类型进程注释 自定义51 200 HTTP localhost:50524 / api / RoomBooking /?textA = asdfghjkl 117无缓存;过期:-1 application / json;字符集= utf-8的 IEXPLORE:10040
在我的Get通话中,我可能做错了什么,即使在这样硬编码时也会停止显示?
self.RoomList = ko.observableArray(); //an array that will hold each room when foreach
self.ShowFreeRoomsFunction = function (item) {
ajaxHelper("/api/RoomBooking/?textA=asdfghj", "GET").done(function (data) {
self.RoomList(data);
});
};
谢谢你们。