使用AJAX从Knockout.JS发送数据

时间:2014-05-21 21:49:33

标签: ajax knockout.js

这对我有用;当我点击UI元素时,请求就会完成。

    self.removeTweet = function(tweet) {
         $.ajax({
                type: 'POST',
                url: nodeApiUrl + 'twitter/remove_tweet/',
                contentType: 'application/json',
                data: JSON.stringify({'index': $('#removeFromQueue').val() }),
                dataType: 'json',
                error: $.osf.handleJSONError
            });
        self.tweets.remove(tweet);
    };

这是Knockout.JS循环

<div id = "foo">
    <!-- ko foreach: tweets -->

        <input id = "queuedTweet" data-bind="value: tweet"/>
        <a  class="btn btn-primary" data-bind="click: $parent.queueSubmit" >
            Send
        </a>
        <a id = "removeFromQueue" data-bind = "click: $parent.removeTweet, value: $index" class="btn btn-danger">
            Delete
        </a>

       </br>

     <!-- /ko -->
   </div>

我想使用AJAX发送$index的值,但

data: JSON.stringify({'index': $('#removeFromQueue').val() })

未返回该值。如何使用AJAX发送此数据?我认为将$index绑定到value将是解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用self.tweets.indexOf(tweet)检索索引,而不是将索引添加为锚点上的值:

self.removeTweet = function(tweet) {
     $.ajax({
            type: 'POST',
            url: nodeApiUrl + 'twitter/remove_tweet/',
            contentType: 'application/json',
            data: JSON.stringify({'index': self.tweets.indexOf(tweet) }),
            dataType: 'json',
            error: $.osf.handleJSONError
        });
    self.tweets.remove(tweet);
};