淘汰服务器呼叫并非全部运行

时间:2015-10-15 22:48:30

标签: c# asp.net asp.net-mvc knockout.js

编辑:我认为这个函数调用了错误的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);
    });
 };

谢谢你们。

0 个答案:

没有答案