javascript - ajax 请求在 knockout js 中发送第二次点击

标签 javascript knockout.js jsfiddle

我有下面的knockout js代码..

设计代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<div class="acmenu">
                        <ul id="accordion" data-bind="foreach: CategoryList">
                            <li data-bind="click$parent.categorySelected),attr:      {iddata.CategoryId},htmldata.CategoryName">
                            </li>
                        </ul>
                    </div>

self.categorySelected = function (selectedCategory, event) {
    $('#newproducttitle').hide();
    event.preventDefault();
    selectCategoryId = selectedCategory.CategoryId();
    var refurbishedUrl = "/services/ShopService.asmx/XGetRefurbishedproducts";
    $.ajax({
        url: refurbishedUrl,
        data: JSON.stringify({ ItemID: itemid, categoryid: selectCategoryId, language: lang }),
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) {

       /******Lines of code**********/

       }});
     }

此函数在每次点击时调用,但 ajax 请求仅在第二次点击时发送。我需要为第一次点击发送 ajax 请求,有什么解决方案吗....

这里我证明了一个js文件的驱动链接https://onedrive.live.com/redir?resid=143242b617ba6be2!6684&authkey=!AAJQbpV8ZQ7fnGI&ithint=file%2ctxt

最佳答案

虽然我们还没有足够的工作要做,但我认为它也是在第一次请求时调用(除非您已经在开发人员工具等中进行了验证)。它似乎在第二次点击时起作用的原因是 ajax 调用没有返回,而在第二次点击时它似乎起作用了。

试试这个来禁用按钮,直到 ajax 返回:

$.ajax({
        url: refurbishedUrl,
        data: ...,
    type: "POST",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    beforeSend:function(){ $(event.target).prop('disabled', true);},        
 }).done(function(data){
           /*USE THIS INSTEAD OF success*/
 }).fail(function(data){
        /*USE THIS INSTEAD OF error*/
 }).always(function(){
        $(event.target).prop('disabled', false);
 });

关于javascript - ajax 请求在 knockout js 中发送第二次点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334831/

相关文章:

javascript - 在组件所有者中存储 React.js 状态

javascript - LinkedIn 共享代码中“&source=”等号后面放什么?

CSS Transition 效果对我的 itty bitty arrow

javascript - 似乎无法让我的 div 标签以我想要的方式溢出

javascript - 为什么我的简单循环不能在 jsfiddle.net 中运行?

javascript - jQuery .val() 不返回选项标签的值

javascript - 有条件地解决 promise

javascript - 从 observableArray- knockoutjs 中删除

knockout.js - 如何从父 View 模型中的表单访问属于组件的可观察量?

knockout.js - 如何使用 requirejs 部分打破 knockout View 模型